Полный rand.. Получаем действительно случайные числа на С++

Как вы наверное уже знаете, для получения случайного числа в С++ предусмотрена функция rand(), но она возвращает не совсем "случайные" числа...
Для использования функции rand() необходимо подключить библиотеку stdlib:

#include <cstdlib>

Попробуйте откомпилировать программу:

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
    cout << rand()%100 << endl;
    return 0;
}

По идее она должна возвращать случайные числа, но при многократном запуске будет выведено одно и тоже число.
Для устранения этой проблемы можно воспользоваться функцией srand(). Она устанавливает исходное число для последовательности, генерируемой функцией rand().
Вот пример использования srand:

#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
    srand(time(0));
    cout << rand()%100 << endl;
    return 0;
}

В качестве параметра srand в нашем примере получает время прошедшее с начала эпохи Unix - time(0). Таким образом генерируются действительно различные - случайные числа.

Просмотров:   1559

Комментарии

чт, 11/22/2012 - 14:10

Спасибо

чт, 11/22/2012 - 14:10

Действительно случайные ? О_о *рукалицо*

чт, 11/22/2012 - 14:10

У этой гадости очень маленький период всё равно.

Написали бы что-ли про нормальный алгоритм, который позволил бы получать существенно случайные целые числа (чтобы последовательность не повторялась на длинах~10^9..10^11)

Про то, что srand надо добавлять миллионзаписей, из-за них действительно ценную информацию не найдёшь.

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!