From: http://www.gnu.org/s/hello/manual/libc/ISO-Random.html
Функция: void srand (unsigned int seed)
Эта функция устанавливает seed в качестве начального числа для новой серии псевдослучайных чисел.Если вы вызываете rand до того, как начальное число было установлено с помощью srand, оно использует значение 1 в качестве начального числа по умолчанию.
Если вы предоставите то же начальное число в srand
, вы всегда получите ту же последовательностьчисел.Если вы никогда не вызовете srand
, то вы всегда будете получать одну и ту же последовательность при каждом запуске приложения.
Обычный прием, чтобы затравить rand
, заключается в использовании time(0)
- в основном считывание системных часов.Это хорошо в простом приложении, которое просто должно быть «в основном случайным».
Но когда действительно важна истинная случайность:
Остерегайтесь того, что вы не должныпросто начните с системного времени в приложении, которое должно быть криптографически защищено (например, что-то, выполняющее хэш-вычисления аутентификации), или иметь надежную гарантию случайности (например, азартная игра на реальные деньги).
Фактически выне следует использовать rand
вообще в таком приложении.Вместо этого вы должны использовать другую случайную функцию;возможно тот, который является специфическим для ОС (специально предоставленным для криптографии), или использует истинный физический источник случайных чисел.