关于random.uniform
,文档字符串说:
根据四舍五入,获取 [a, b) 或 [a, b] 范围内的随机数。
但我不知道“取决于四舍五入”到底是什么意思。
关于random.uniform
,文档字符串说:
根据四舍五入,获取 [a, b) 或 [a, b] 范围内的随机数。
但我不知道“取决于四舍五入”到底是什么意思。
返回一个随机浮点数,
N
例如a <= N <= b
fora <= b
和b <= N <= a
forb < a
。端点值
b
可能包含在范围内,也可能不包含在范围内,具体取决于等式中的浮点舍入a + (b-a) * random()
。
计算机上的浮点运算在精度上是有限的,由这种不精度引起的舍入误差可能会导致b
不包含在用于uniform()
返回的随机值的全部值范围内。
random.random()
返回一个介于 0.0(包括)和 1.0(不包括)之间的值。有 和 的值a
,b
其中总和的浮点计算a + (b-a) * (1.0 - epsilon/2)
不等于b
,但会比小b
一点,而对于其他组合,总和确实等于b
。epsilon
是您平台上浮点数的最小精度(请参阅 参考资料sys.float_info
),并且可以返回1.0 - epsilon/2
最大值。random.random()
如果您对计算机上的浮点运算不精确的细节感兴趣,我可以推荐以下两篇文章:
rounding
是:如果我向上舍入 3.45,我将得到 4。但如果我向下舍入,我将得到 3。所以在这种情况下,来自 [ 或 ] 的范围值将根据轮次而变化