生成统一整数(例如,每次调用返回64位)
我正在尝试制作一个简单的程序来演示一些东西,尽管我对其数学有些困惑。
from random import random
a = random()
我阅读了随机函数,其分布为[0.0; 1.0)。它使用Mersenne Twister生成伪随机数,它是56位精度的浮点数。
我假设这意味着它精确生成0.0的概率是1/2 ^ 56?
为了使概率为1/2 ^ 28,必须低于什么?..我试图理解56位浮点转换,但似乎无法弄清楚。实际的浮动值必须是多少?
a = ?
if random() < a:
print("Success")
[在[0,1]上具有连续的均匀分布,小于x的样本部分为x。例如,½个样本小于½。因此,使样本小于x的概率为1/2 [28]的x为1/2 [28]。]在[0,1上有一个量化的分布(分布中只有某个量子的倍数),如果x是分布中的数字,则同样如此。如果它在分布的两个数字之间,则样本小于x的概率就是刚刚大于x的数字。但是,在您描述的情况下,似乎1/2 28在分布中,因此是答案。
生成统一整数(例如,每次调用返回64位)取决于它是如何生成的。几乎所有库都使用等距方法来生成[0,1)的值。简要地:丢弃多余的位数以匹配浮点精度(单精度为24,双精度为53)
生成统一整数(例如,每次调用返回64位)