Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Time(0) и srand() в C++

aciies s Ученик (110), на голосовании 1 день назад
Помогите пожалуйста разобраться в использовании рандомных чисел в C++. В чем разница между srand(число); и srand(time(0));
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (272680) 1 месяц назад
Функция srand задает начальное начальное значение (сид) для генератора псевдослучайных чисел, используемого функцией rand.

Один и тот же сид приводит к рождению одной и той же последовательности чисел через rand. Попробуйте задать сид константой вроде 37 и 10 раз вывести результат вызова rand. Запустите эту программу несколько раз, и вы увидите, что всё одно и то же.

Фишка с time(0) состоит в том, чтобы передавать текущее значение системного таймера (в секундах). Так как время постоянно идет, секунды тикают, то при каждом запуске в качестве сида задается новое число, которого не было раньше, и вызовы rand каждый раз рождают новую последовательность чисел.
Андрей Высший разум (481864) 1 месяц назад
Разница в том, что передавая одно и то же число, ты получишь одну и ту же последовательность псевдослучайных чисел, выдаваемую rand. А time(0) при каждом запуске программы выдаёт другое число (это же просто кол-во секунд, пошедших с 1970-01-01 00:00:00) и ты получаешь разные последовательности псевдослучайных чисел.

rand / srand - очень древний механизм. В современном С++ использовать именно этот генератор псевдослучайных чисел не имеет смысла.
aciies sУченик (110) 1 месяц назад
Спасибо! А что лучше использовать?
Андрей Высший разум (481864) aciies s, https://learn.microsoft.com/ru-ru/cpp/standard-library/random
Похожие вопросы