【问题标题】:Javascript Math.random()Javascript Math.random()
【发布时间】:2011-07-31 15:16:01
【问题描述】:

Math.random() in javascript is 能够返回 1,对吗?这意味着如果我要使用它来获取数组上的随机索引,则以下代码可能会失败:

var arr = [ 1, 2, 3 ],
    index = Math.floor(Math.random() * arr.length);

// index could be 3?
alert(arr[index]);

有人能解释一下吗?

【问题讨论】:

  • 您是否阅读过您链接的文档?答案就在第一个句中。
  • 我做了,但我不确定独占是什么意思。
  • @Kevin:那么这个问题是题外话,最好在english.stackoverflow.com上提供,纯粹作为语言问题提出。
  • 想在单独的主题中清除它? :) 不,不可能。
  • @Emmerman:Stack Overflow 不是论坛;它有问题和答案,而不是“主题”。

标签: javascript arrays random


【解决方案1】:

不,它从 0 inclusive 返回到 1 exclusive

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Math/random

但请注意该页面中的警告:

请注意,JavaScript 中的数字是 IEEE 754 浮点数 四舍五入到最近的偶数行为,这些 范围,不包括一个 Math.random() 本身并不准确, 取决于界限 在极少数情况下可能(在 1 in 262) 的顺序来计算 通常被排除的上限。

不过,出于这些目的,您应该没问题。

【讨论】:

  • 所以我的英语让我失望了:'(.
【解决方案2】:

您发布的链接将我带到一个显示以下内容的网站:

返回一个伪随机数 范围 [0,1) — 即在 0 之间 (含)和 1(不含)。这 随机数生成器的种子来自 当前时间,如在 Java 中。

“inclusive”表示该值是范围的一部分,而“exclusive”表示该值不是范围的一部分。

所以Math.random() 返回一个从 0 到刚好小于 1 的值。

【讨论】:

    【解决方案3】:

    介于 0(包括)和 1(不包括)之间 - 不能为 1

    你的代码没问题

    【讨论】:

      【解决方案4】:

      我很确定

      返回的数字

      Math.random()

      小于 1 但等于或大于零。

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 2017-02-19
        • 2013-07-15
        • 1970-01-01
        • 2010-11-06
        • 2017-05-03
        • 1970-01-01
        • 2013-10-30
        • 2012-10-29
        相关资源
        最近更新 更多