2015-11-19 1 views
2

У меня есть скрипт, который генерирует 10 случайных чисел от 2 и 12:random.randint (2, 12) возвращает одинаковые результаты каждый раз, когда он запущенного в Python

repetition = 10 
while repetition > 0: 
    print(random.randint(2,12)) 
    repetition = repetition - 1 

Когда этот код исполняется 10 случайных чисел но каждый раз, когда я выполняю код, генерируются одинаковые 10 случайных чисел. Это происходит, даже если я запускаю код на другом компьютере!

+0

Можете вы также добавить результат своего кода? – Kasramvd

+7

Некоторые другие части вашего кода должны высевать случайный генератор с фиксированным значением. –

+0

Это полный код для воспроизведения проблемы? 'random' имеет функцию' seed', которая устанавливает начальную точку для PRNG; если это устанавливается перед вашими вызовами, то ожидаемое поведение - получать одинаковые результаты каждый раз даже на разных компьютерах. – dwanderson

ответ

0

Первое, что вы должны понимать, это то, что генерируемые компьютером случайные числа не являются случайными. Чтобы создать псевдослучайное число, компьютер использует функцию, которая генерирует число, основанное на предыдущем значении (более подробная информация находится в https://en.wikipedia.org/wiki/Random_number_generation). Последовательность псевдослучайных чисел зависит от первого значения, переданного этой функции, известного как семян.

По умолчанию в конструкторе класса Random (__init__), используемом случайным модулем Python, семя определяется операционной системой. Обычно это зависит от текущего системного времени. Если вы определили свое собственное семя, используя функцию random.seed, ваши результаты будут детерминированными. В этом случае вы всегда будете получать одинаковые значения.