我对 random.random() 函数在 python 中的工作方式有点困惑。
的文档说,它的回归在[0.0,1.0)的范围内的下一个随机浮点数'。我知道伪随机数生成器通过对值执行一些操作来工作。通常,此值是生成器生成的前一个数字。所以我认为这就是“下一个随机浮点”在这里的意思。(如果我错了,请纠正我)
但是当我看到随机库的源代码时,在class Random. 相反,它的定义class SystemRandom如下(代码的第 671 行):
def random(self):
"""Get the next random number in the range [0.0, 1.0)."""
return (int.from_bytes(_urandom(7), 'big') >> 3) * RECIP_BPF
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这个函数会使用 os.urandom 生成一个随机数。根据文档,其中从特定于操作系统的随机性源返回随机字节。所以这不会给出“下一个”浮点随机数。
两者是如何联系起来的?或者它们是两种不同的东西?
我在这里很困惑。任何形式的帮助将不胜感激。
谢谢!