我已经使用 Python3 的 random.random() 进行了蒙特卡洛模拟,我想通过使用 different PRNG 来交叉检查结果,但仍然使用 Python。这可以吗?
显然(?)random.getrandbits(k)使用Wichmann-Hill而不是MersenneTwister,但这会返回具有指定位数的整数。这可以以某种方式进行调整吗?
另外,我使用 pypy 解释器是因为它具有大约 10 倍的速度优势(但它无法导入 numpy)。
请注意,Twister 用于 CPython 中的所有内容
random
,包括 getrandbits()
。
您可以使用
random.SystemRandom
类的方法来获得完全不同的随机数。例如
>>> import random
>>> mygen = random.SystemRandom()
>>> mygen.random()
0.06723509434525832
>>> mygen.randrange(-20, 40)
23
这使用您平台的
urandom()
来获取位,这在大多数平台上都是“加密安全的”。它速度较慢,并且不能被“播种”(结果不可重现)。