Различаются ли случайно выбранные случайные числа между версиями Python? - PullRequest
0 голосов
/ 25 мая 2019

Вопрос:

Почему сеяные случайные выходы кажутся разными в разных версиях Python?Пропустил ли я что-то очевидное, документированное ли это поведение (я не смог его найти)

Наблюдаемые результаты:

Попытка воспроизвести случайные числа в разных версиях Python дает разные результаты:

# python 3.7
rachel = sorted(Random('rachel').sample(range(57), 6))
larry = sorted(Random('larry').sample(range(57), 6))
armin = sorted(Random('armin').sample(range(57), 6))
laura = sorted(Random('laura').sample(range(57), 6))
rachel, larry, armin, laura

вывод:

([8, 22, 27, 35, 45, 47],
 [10, 18, 20, 29, 45, 47],
 [4, 7, 15, 22, 47, 52],
 [5, 8, 37, 40, 50, 55])

Точка сравнения:

Принимая во внимание, что на скриншоте с продвинутого питона Рэймонда Хеттингера на Europycon 2011 показан другой вывод - вероятно,Python 2.6 или 2.7: (качество изображения низкое, но результаты явно разные)

enter image description here

1 Ответ

2 голосов
/ 25 мая 2019

Просматривая документацию для функции seed в модуле random, вы видите, что есть примечание, что в Python 3.2 по умолчанию используется другая версия.

В версии 2 (по умолчанию) объект str, bytes или bytearray преобразуется в int и используются все его биты.

В версии 1 (предусмотрен для воспроизведения случайных последовательностей из более старых версий Python) алгоритм для строк и байтов генерирует более узкий диапазон начальных чисел.

Этого достаточно, чтобы ответить на факт различных последовательностей между скриншотом и вашим делом.

...