Math.random数组长度+1?

时间:2011-05-10 17:50:14

标签: javascript arrays math random

我不明白这段代码中的内容:

vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];

假设我们有一个新的Array,有5个元素,所以从索引0到索引4

然后让我们说Math.random()返回1.所以,我们已经找到了1*5,但我的Array中不存在5索引,此外我们添加了一个“+1”

为什么要+1?我本来期望与“-1”恰好相反。

2 个答案:

答案 0 :(得分:1)

Math.random不返回1,它返回0到1之间的值。Math.floor基本上截断了值的小数。

因此,如果Math.random返回0.3984753005206585并将其乘以4,我们会1.593901202082634 1后变为Math.floor

如果要从数组中获取随机值,可以将Math.random乘以长度,因此它将返回介于0和长度之间的值(但不会是长度)。

上述代码中anims.length + 1不正确。

答案 1 :(得分:1)

代码错了(如Rocket所说)。它应该是

Math.floor(Math.random()*(anims.length))

但是推理也有一个缺陷:Math.random()不能返回“1”。