[英]Jython random module produces different results to cpython
我正在使用已知的隨機種子生成一些測試數據。 我想從cpython和jython中使用這些數據。 我發現如果使用jython(2.5.2)和cpython,數據會有所不同。
將其歸結為一個簡單的測試,我可以看到PRNG在兩個實現中給出了不同的結果:
在Jython中:
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[Java HotSpot(TM) Server VM (Sun Microsystems Inc.)] on java1.6.0_26
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>> random.seed(1)
>>> random.random()
0.7308781974052877
在CPython中:
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>> random.seed(1)
>>> random.random()
0.13436424411240122
我正在生成的測試數據在每個python實現中都是可重現的。 有沒有解決的辦法? 也許我需要編寫自己的PRNG代碼?
有一種解決方法。 兩種實現都包括純蟒蛇“WichmannHill”PRNG。 它的速度較慢,但它在Jython和CPython中都給出了相同的結果。
在我的代碼中我替換了
random.seed(1)
uuid += random.choice(hexdigits)
同
rand = random.WichmannHill(1)
uuid += rand.choice(hexdigits)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.