Javascript Math.random()

3

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

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

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

有人能解释一下这个吗?

5
你有读过你链接的文档吗?答案就在第一句话里。 - R. Martinho Fernandes
我做了,但我不确定“exclusive”是什么意思。 - Kevin
1
@Kevin:那么这个问题就不是主题,最好在english.stackoverflow.com上提出,纯粹作为语言问题。 - Lightness Races in Orbit
想在单独的主题中清除它吗? :) 不行,不可能。 - Emmerman
@Tomalak:你一定是指.stackexchange吧(:? 但我应该在那里问,是的。 - Kevin
显示剩余3条评论
4个回答

8

不是返回从0(含)到1(不含)的值。

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

请注意该页面中的警告:

请注意,由于 JavaScript 中的数字是 IEEE 754 浮点数,并具有舍入至最近偶数行为,这些范围(除 Math.random() 本身之外的范围)并非精确,取决于边界,在极少的情况下(在 2 的 62 次方中约为 1 次),可以计算通常排除的上限。

但是,对于这些目的,您应该没有问题。


所以我的英语让我失望了 :'(. - Kevin

8
您发布的链接将我带到了一个网站,上面写着:
返回[0,1)范围内的伪随机数,即在0(包括)和1(排除)之间。与Java类似,随机数生成器从当前时间开始初始化。
“inclusive”表示该值是范围的一部分,而“exclusive”表示该值不是范围的一部分。
因此,Math.random()返回从0到略小于1的值。

0

我非常确定由

Math.random()

是小于1但等于或大于零。


0

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

您的代码没问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接