python中的random()

Ark*_*avo 4 python random

在python中,函数random()在半开放范围[0.0,1.0]中统一生成随机浮点数.原则上它可以产生0.0(即零)和1.0(即统一)?实际情况是什么?

Amb*_*ber 13

0.0可以生成; 1.0不能(因为它不在范围内,因此)相反[).

生成概率0.0等于在该范围内生成任何其他数的概率,即1/X,其中X是不同可能结果的数量.对于标准无符号双精度浮点,这通常意味着53位小数分量,对于2 ^ 53种可能的组合,导致1 /(2 ^ 53)精确生成的机会0.0.

因此虽然它可以准确地返回0.0,但你不太可能很快就会看到它 - 但是你不太可能看到你可能提前选择的任何其他特定值.

  • @Dav:对于已经很好的答案只是一个挑剔,但我认为你的意思是53,而不是52.有一个完美的随机源(Mersenne Twister当然不是,但它足以用于实际的非加密目的),随机()生成n/2 ^ 53的形式,其中n是在[0,2 ^ 53]范围内均匀随机选择的整数.如果查看源,它需要MT算法生成两个32位字,并将第一个的前27位与第二个的前26位组合以创建n.顺便说一句,这意味着不能生成[0.0,1.0)中的大多数浮点数. (2认同)

Han*_*Gay 11

所述[指示0.0 包括在有效输出的范围.该)指示1.0在有效输出的范围.