【发布时间】:2017-07-02 20:10:33
【问题描述】:
在this comment in another question 中,dimo414 指出 OP 代码的问题之一是它会不均匀地生成随机数。所以我想知道这是为什么?它是特定算法固有的吗?还是与Math.random() 本身有关?是因为[0.0, 1.0)区间内选择的数字的浮点表示吗?
附言我理解使用Random.nextInt() 的建议答案。我也想了解更多使用Math.random()的缺陷。
【问题讨论】:
-
Javadoc 说“... 返回值是伪随机选择的,并且(近似)均匀分布在该范围内。 ...”
-
您能否重复原始问题中您认为相关的部分?现在,您只是要求对原始问题发表评论——即,如果原始问题消失,则很难将其视为一个单独的问题。
-
这个详细讨论in this question。根本问题是
Math.random()返回的可能值与大多数离散范围不对应 1:1。通常,在尝试转换随机变量时很容易引入偏差或偏斜。最好留给专家。 -
这两种方法之间的差异很小,在任何实际应用程序中绝对不值得担心。
-
@DawoodibnKareem 这也是我的评价。真正的问题是 OP 错误地从列表的大小中减去 1。