我已经使用Python3的random.random()进行了蒙特卡洛模拟,我想通过使用different PRNG来交叉判断结果,但仍然使用Python. 这可以做到吗?
显然(?)random.getrandbits(k)使用Wichmann-Hill而不是MersenneTwister,但这会返回具有指定位数的整除.这可以以某种方式进行调整吗?
此外,我正在使用pypy解释器,因为它有大约10倍的速度优势(但它无法导入numpy).
我已经使用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()
来获取比特,这在大多数平台上是"加密安全的".速度较慢,cannot被" seeder "(结果不可重复).