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