使用 Python 和 PRNG(不是 Mersenne Twister)高效生成 [0,1) 中的伪随机浮点数?

问题描述 投票:0回答:1

我已经使用 Python3 的 random.random() 进行了蒙特卡洛模拟,我想通过使用 different PRNG 来交叉检查结果,但仍然使用 Python。这可以吗?

显然(?)random.getrandbits(k)使用Wichmann-Hill而不是MersenneTwister,但这会返回具有指定位数的整数。这可以以某种方式进行调整吗?

另外,我使用 pypy 解释器是因为它具有大约 10 倍的速度优势(但它无法导入 numpy)。

python random
1个回答
0
投票

请注意,Twister 用于 CPython 中的所有内容

random
,包括
getrandbits()

您可以使用

random.SystemRandom
类的方法来获得完全不同的随机数。例如

>>> import random
>>> mygen = random.SystemRandom()
>>> mygen.random()
0.06723509434525832
>>> mygen.randrange(-20, 40)
23

这使用您平台的

urandom()
来获取位,这在大多数平台上都是“加密安全的”。它速度较慢,并且不能被“播种”(结果不可重现)。

© www.soinside.com 2019 - 2024. All rights reserved.