Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
种子python在Mac和Windows上随机生成不同的数字_Python_Windows_Macos_Random_Portability - Fatal编程技术网

种子python在Mac和Windows上随机生成不同的数字

种子python在Mac和Windows上随机生成不同的数字,python,windows,macos,random,portability,Python,Windows,Macos,Random,Portability,我参与了一个将在Mac和Windows上运行的python应用程序,该应用程序使用py2app和py2exe打包到可执行文件中。重要的是,所有应用程序在任何时候都生成相同的随机数。所以随机模块总是得到相同的种子 然而,random.shuffle()的结果在Windows Mac上似乎大不相同 有没有办法确保总是生成相同的随机数 代码非常乏味: import random random.seed("ladygaga") swaplist_odd = [n for n in range(len(

我参与了一个将在Mac和Windows上运行的python应用程序,该应用程序使用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)
其思想是洗牌一个缓冲区,并能够通过再次洗牌重新创建原始缓冲区


如果进程停留在一个操作系统内,则没有问题。一旦将缓冲区文件复制到另一个操作系统,重新创建原始文件就会失败。

是否可能使用两个不同版本的Python


根据研究,Python从使用Wichmann-Hill算法转向使用Mersenne Twister生成从2.3开始的伪随机数。

Python2.x和Python3.x似乎具有不兼容的随机数生成器,即使使用相同的数字进行播种,也会返回不同的结果

对我来说,MacOS上的Python2.7.16返回的结果与Ubuntu上的Python2.7.12相同

MacOS上的Python3.7.3与Ubuntu上的Python3.5.2返回相同的结果


此外,字符串的散列在不同的Python安装上可能不同,因此您应该使用数字种子,而不是
ladygaga

您使用的Python版本是什么?也许这两台机器上的Python版本不同?比较两者的hash(“ladygaga”)是否相同?显然,macos和Windows对ladygaga有不同的看法。