Если вы используете тот же генератор случайных чисел, с тем же начальным и тем же начальным
последовательность, результаты будут одинаковыми. В конце концов, компьютер - это
детерминированный в своем поведении (по модулю потоков и некоторые другие
шансы и конец).
Если вы не укажете генератор, генератор по умолчанию будет
реализация определена. Я думаю, что большинство реализаций используют
std::rand()
(что может вызвать проблемы, особенно когда число
элементы в последовательности больше, чем RAND_MAX
). Я бы посоветовал
получить генератор с известным качеством и использовать его.
Если вы неправильно заполнили используемый генератор (другой
причина не использовать значение по умолчанию, так как от того, как вы его посеете, будет зависеть
реализации), тогда вы получите то, что вы получите. В случае
std::rand()
, по умолчанию всегда используется одно и то же начальное число. Как вы семя
зависит от используемого генератора. То, что вы используете для посева, должно быть разным
от одного забега к другому; для многих приложений time(NULL)
достаточно; на платформе Unix я бы рекомендовал читать сколько угодно байтов
это берет от /dev/random
. В противном случае хеширование другой информации (IP
адрес машины, идентификатор процесса и т. д.) также может улучшить ситуацию --- это
означает, что два пользователя запускают программу в одно и то же
все равно получит разные последовательности. (Но это действительно только актуально
если вы работаете в сетевом окружении.)