Python random.random-滚动概率为0

Python random.random-滚动概率为0,python,random,Python,Random,如中所述,random.random将“返回[0.0,1.0]范围内的下一个随机浮点数” 那么它返回0的可能性有多大呢?根据文档,它 它产生53位精度 它所基于的Mersenne Twister有一个巨大的状态空间,比这个大很多倍。它还经常通过位独立性的统计测试(在设计用于在RNG输出中发现模式的程序中)。分布基本上是均匀的,任何位为0或1的概率相等 精确获得0.0的概率为1/2^53(假设内部状态未知)非常有效,0。非常好!这在所有平台上都是一致的吗?是否有可能因为算法或精度的限制而变得更高?

如中所述,random.random将“返回[0.0,1.0]范围内的下一个随机浮点数”


那么它返回0的可能性有多大呢?

根据文档,它

它产生53位精度

它所基于的Mersenne Twister有一个巨大的状态空间,比这个大很多倍。它还经常通过位独立性的统计测试(在设计用于在RNG输出中发现模式的程序中)。分布基本上是均匀的,任何位为0或1的概率相等


精确获得0.0的概率为1/2^53(假设内部状态未知)

非常有效,0。非常好!这在所有平台上都是一致的吗?是否有可能因为算法或精度的限制而变得更高?@dexgecko:我认为这在大多数Python版本和平台上都是一致的,因为它们都在源代码中完全实现了Mersenne Twister算法,而不是操作系统或应用程序共享库调用。您可以通过使用例如
random.seed(12345)
并查看
random.random()
中接下来几个调用的输出来检查这一点-我希望这在各种Python实现中都是一致的。但是如果您使用
random.SystemRandom
(无论如何都应该使用它)这是一个不同的故事。这可能在很大程度上取决于操作系统、CPU和可能的其他因素(熵源)。但是,它应该或多或少地给出几乎相同的概率。@freakish:取决于用例。Mersenne Twister在模拟、随机解算等方面在统计上是快速和良好的。但千万不要出于安全目的使用它。@NeilSlater真的,真的。我想当我想到随机性时,我总是在考虑安全性. :)