2011-07-07 18 views
3

我參與了一個python應用程序,它將在Mac和Windows上運行,並與py2app和py2exe一起打包成可執行文件。所有應用程序始終生成相同的隨機數是非常重要的。所以隨機模塊總是獲得相同的種子。播種python隨機在Mac和Windows上產生不同的數字

然而,random.shuffle()的結果在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) 

的想法是重新洗牌的緩衝器,並且能夠通過重新洗牌,以重建原始的緩衝區。

如果進程停留在一個操作系統內,則沒有問題。只要緩衝區文件被複制到另一個操作系統,原始文件的重新創建就會失敗。

+0

你正在使用哪些版本的Python? – dckrooney

+0

也許你在兩臺機器上有不同版本的Python?比較哈希(「ladygaga」)兩個,他們是一樣的嗎? –

+2

顯然,Mac OS和Windows對ladygaga有不同的意見。 –

回答

2

您是否有可能使用兩種不同版本的Python?

根據documentation,Python從使用Wichmann-Hill算法轉向使用Mersenne Twister生成從2.3開始的僞隨機數。