【问题标题】:How random is Math.random()? [duplicate]Math.random() 有多随机? [复制]
【发布时间】:2012-12-21 20:26:52
【问题描述】:

可能重复:
How random is JavaScript’s Math.random?

Math.random() 究竟使用什么算法来生成它的随机数?

给定双精度数的格式,以及Math.random() 生成的范围,有多少种可能的结果?

考虑到上述情况和浮点数的(不)准确性,Math.random() 准确返回 0 的几率是多少?

【问题讨论】:

标签: javascript random


【解决方案1】:

它使用一个伪随机数生成器,种子是它被调用的时间。

此页面有一些图片来比较真正的随机噪声和伪随机噪声。有趣的图案:http://boallen.com/random-numbers.html

JS 的伪随机不一定完全一样,但应该很接近。

【讨论】:

    【解决方案2】:

    Math.random 使用数字的均匀分布。

    【讨论】:

    • 是的,但是...什么数字? (见最后一段)
    • 浮点数的不准确性非常棘手。在我看来,如果您只是扩展范围,使每个选定的数字都是整数(整数),然后将其除以一个常数以使它们适合您所需的范围,那么其中的每个数字都有相同的机会出现。总的来说,均匀分布只是意味着概率分布曲线中的一条水平线。这意味着至少在理论上,一切都有平等的机会。
    • 不统一。这是伪随机的,看我的回答。
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2010-12-30
    相关资源
    最近更新 更多