Сеяный случайный питон производит разные числа на Mac и Windows - PullRequest
4 голосов
/ 07 июля 2011

Я участвую в приложении python, которое будет работать на Mac и Windows, упакованном в исполняемые файлы с py2app и py2exe. Важно, чтобы все приложения всегда генерировали одинаковые случайные числа. Таким образом, случайный модуль всегда получает одно и то же семя.

Однако результаты работы random.shuffle () в Windows и Mac кажутся очень разными.

Есть ли способ убедиться, что всегда генерируются одни и те же случайные числа?

Код очень неинтересный:

import random
random.seed("ladygaga")
swaplist_odd  = [n for n in range(len(clipboard)) if n % 2 != 0]
swaplist_even = [n for n in range(len(clipboard)) if n % 2 == 0]
random.shuffle(swaplist_odd)
random.shuffle(swaplist_even)

Идея состоит в том, чтобы перетасовать буфер и иметь возможность воссоздать исходный буфер, снова перетасовав.

Если процесс выполняется в одной операционной системе, проблем нет. Как только файлы буфера копируются в другую операционную систему, повторное создание оригинала завершается неудачей.

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Возможно ли, что вы используете две разные версии Python?

Согласно документации , Python перешел от использования алгоритма Вихмана-Хилла к использованию Twister Mersenne для генерации псевдослучайных чисел, начиная с 2.3.

0 голосов
/ 11 июля 2019

Python 2.x и Python 3.x, кажется, имеют несовместимые генераторы случайных чисел и возвращают разные результаты, даже если они засеваются одинаковым номером.

Для меня Python 2.7.16 на MacOS возвращает то же самое, что иPython 2.7.12 в Ubuntu.

Python 3.7.3 в MacOS возвращает то же самое, что Python 3.5.2 в Ubuntu.

Кроме того, хэш строки может отличаться в разных установках Python, поэтому вместо ladygaga.

следует использовать числовое начальное число.
...