Javascript Math.random()

Kev*_*vin 3 javascript arrays random

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

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

// index could be 3?
alert(arr[index]);
Run Code Online (Sandbox Code Playgroud)

有人可以对此有所了解吗?

Aln*_*tak 8

不,它从0返回 1 独占

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

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

请注意,由于JavaScript中的数字是具有舍入到最近偶数行为的IEEE 754浮点数,因此这些范围(不包括Math.random()本身的范围)并不精确,并且根据边界可能极其可能很少的情况下(1 2的数量级上62来计算)的通常排除上限.

但是,出于这些目的,你应该没问题.


Lig*_*ica 8

您发布的链接将我带到一个网站,上面写着:

返回范围[0,1)中的伪随机数 - 即0(包括)和1(不包括)之间的伪随机数.随机数生成器从当前时间播种,如在Java中.

"包含"表示该值是范围的一部分,而"独占"表示该值不是该范围的一部分.

因此Math.random()返回一个从0到小于1的值.