7

关于random.uniform,文档字符串说:

根据四舍五入,获取 [a, b) 或 [a, b] 范围内的随机数。

但我不知道“取决于四舍五入”到底是什么意思。

4

2 回答 2

7

当前的文档为random.uniform()

返回一个随机浮点数,N例如a <= N <= bfora <= bb <= N <= afor b < a

端点值b可能包含在范围内,也可能不包含在范围内,具体取决于等式中的浮点舍入a + (b-a) * random()

计算机上的浮点运算在精度上是有限的,由这种不精度引起的舍入误差可能会导致b不包含在用于uniform()返回的随机值的全部值范围内。

random.random()返回一个介于 0.0(包括)和 1.0(不包括)之间的值。有 和 的值ab其中总和的浮点计算a + (b-a) * (1.0 - epsilon/2)不等于b,但会比b一点,而对于其他组合,总和确实等于bepsilon是您平台上浮点数的最小精度(请参阅 参考资料sys.float_info),并且可以返回1.0 - epsilon/2最大值。random.random()

如果您对计算机上的浮点运算不精确的细节感兴趣,我可以推荐以下两篇文章:

于 2012-11-03T21:10:43.340 回答
-1

rounding是:如果我向上舍入 3.45,我将得到 4。但如果我向下舍入,我将得到 3。所以在这种情况下,来自 [ 或 ] 的范围值将根据轮次而变化

于 2012-11-03T21:29:40.310 回答