我試圖從python的random.random()
在不同的系統上安裝不同的python3版本來重現隨機序列。爲什麼在Python版本之間播種隨機生成器不穩定?
這應該是很容易的documentation says:
大多數的隨機模塊的算法和直播功能 受到不同的Python版本中的更改,但有兩個方面 保證不變:
- 如果添加新的播種方法,則會提供向後兼容的播種機 。
- 當兼容播種機被賦予相同的 種子時,生成器的random()方法將繼續到 產生相同的序列。
因此,我希望下面的代碼總是打印相同的10個號碼,不管具體python3版本:
import sys
print(sys.version)
from random import seed, random
seed(str(1))
for i in range(10):
print(random())
然而,測試它在兩臺不同的機器:
3.2.3 (default, May 3 2012, 15:51:42)
[GCC 4.6.3]
0.4782479962566343
0.044242767098090496
0.11703586901195051
0.8566892547933538
0.2926790185279551
0.0067328440779825804
0.0013279506360178717
0.22167546902173108
0.9864945747444945
0.5157002525757287
and
3.1.2 (release31-maint, Dec 9 2011, 20:59:40)
[GCC 4.4.5]
0.0698436845523
0.27772471476
0.833036057868
0.35569897036
0.36366158783
0.722487971761
0.963133581734
0.263723867191
0.451002768569
0.0998765577881
給出不同的結果。
這是爲什麼?而有沒有什麼辦法,使這項工作
爲它的價值,在2.7上運行您的代碼段會產生完全不同的一套比任何您發佈的兩個數字。 – 2012-08-13 07:20:05
它聲明*將提供向後兼容播種機*不是現有方法將向後兼容。 – borrible 2012-08-13 07:25:03