在the documentation中,据说uniform(0,1)
有可能生成值0
和1
。
我已运行uniform(0, 1)
10000次,但从未产生零。即使在uniform(0, 0.001)
的情况下。
random.uniform(0,1)
是否可以生成0
或1
?
“几次”是不够的。 10,000还不够。 random.uniform
从2 ^ 53(9,007,199,254,740,992)个不同的值中进行选择。您对其中的[[two感兴趣。这样,您应该期望在获得恰好为0或1的值之前先生成几个quadrillion随机值。所以有可能,但是很有可能永远不会观察到它。
b
可以包含在产生的值中:
根据公式b
中的浮点舍入,端点值a + (b-a) * random()
可以包含或不包含在范围内。
因此,对于uniform(0, 1)
,简化为0 + (1-0) * random()
的公式1 * random()
必须能够精确生成1
。这永远不会发生,因为random()
从不产生1.0
。