【问题标题】:How does JS return a random number?JS如何返回一个随机数?
【发布时间】:2013-07-19 20:48:52
【问题描述】:

我知道如果你这样做Math.random(),它会返回一个介于 0(含)和 1(不含)之间的随机数,但是我在哪里可以找到 JS 是如何选择返回这个数字的呢?

MDN page 不包含较低级别的代码。

根据wikipediahere,获取随机数的方法有很多,但是JS用的是哪种方法。

【问题讨论】:

标签: javascript


【解决方案1】:

由 JavaScript 引擎供应商选择他们想要使用的随机数生成器。

只要它在[0, 1> 区间内产生一个“随机”数字,它们就会适合ECMA specification

15.8.2.14 随机()

返回一个带正号的数值,大于或等于 0 但小于 1,随机或伪随机选择,大约 在该范围内均匀分布,使用 依赖于实现算法或策略。

来源:
http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.14

供应商没有列出他们使用的算法(据我所知),因此除非您想浏览源代码(在可能的情况下),否则您无法找到(无论如何都很容易)。

(如果您询问安全性:请勿使用任一浏览器的内置版本,因为它们不适合此目的。)

【讨论】:

    【解决方案2】:

    随机数生成器 math.random() 是从当前时间开始播种的,就像在 Java 中一样。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多