我不明白这段代码中的内容:
vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
假设我们有一个新的Array
,有5个元素,所以从索引0到索引4
然后让我们说Math.random()
返回1.所以,我们已经找到了1*5
,但我的Array
中不存在5索引,此外我们添加了一个“+1”
为什么要+1?我本来期望与“-1”恰好相反。
答案 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”。