Python 从random()获取0.0的概率?

Python 从random()获取0.0的概率?,python,random,floating-point,probability-density,Python,Random,Floating Point,Probability Density,我正在尝试制作一个简单的程序来演示一些东西,尽管我对它的数学知识有点预先理解 从随机导入随机 a=随机() 我读过随机函数,它的分布是[0.0;1.0]。它使用Mersenne Twister生成伪随机数,它是一个56位精度的浮点数 我假设这意味着它生成0.0的概率是1/2^56 为了使概率为1/2^28?,a必须小于多少?我试图理解56位浮点转换,但我似乎无法理解。实际浮点值必须是多少 a=? 如果随机() 打印(“成功”) 对于[0,1]上的连续均匀分布,小于x的样本部分为x。例如,½个样

我正在尝试制作一个简单的程序来演示一些东西,尽管我对它的数学知识有点预先理解

从随机导入随机
a=随机()
我读过随机函数,它的分布是[0.0;1.0]。它使用Mersenne Twister生成伪随机数,它是一个56位精度的浮点数

我假设这意味着它生成0.0的概率是1/2^56

为了使概率为1/2^28?,a必须小于多少?我试图理解56位浮点转换,但我似乎无法理解。实际浮点值必须是多少

a=?
如果随机()
打印(“成功”)

对于[0,1]上的连续均匀分布,小于x的样本部分为x。例如,½个样本小于½。因此,x使得样本小于x的概率为1/228为1/228


通过量化分布(分布中只有特定量子的倍数)超过[0,1),如果x是分布中的一个数字,情况也是如此。如果它在分布中的两个数字之间,则样本小于x的概率正好大于x。然而,在您描述的情况下,似乎1/228在分布中,因此它是答案。

这取决于它是如何生成的。几乎所有l库使用等距方法生成[0,1]上的值。简要说明:

  • 生成统一整数(例如,每次调用返回64位)
  • 丢弃多余的位数以匹配浮点精度(24表示单精度,53表示双精度)
  • 将整数转换为浮点(由于值“适合”,所以不会进行舍入),并缩放到范围(2^-24/2^-53)

  • So(参加双打)该方法产生2 ^ 53个唯一的FP值,每个都以2 ^ 53的概率出现。基础整数生成器的位数不影响这个。< /P>如果生成0的概率是1/2 ^ 56,那么这并不意味着生成2 ^ 56随机数必然产生0。作为另一个例子,考虑掷硬币。尽管头部的概率是1/2,但这并不意味着掷硬币两次就一定会产生头部。你是说梅森扭曲器吗?扭曲向列相是一种LCD技术,而不是随机数发生器。是的,梅森扭曲器。现在是凌晨3点,我的大脑很奇怪,对不起