[英]Math.random array length +1?
我不明白這段代碼中的內容:
vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
假設我們有一個新的Array
,有5個元素,所以從索引0到索引4
然后讓我們說Math.random()
返回1.所以,我們得到了1*5
的底線,但我的Array
中不存在5個索引,另外我們添加了一個“+1”
為何+1? 我原以為與“-1”恰好相反。
Math.random
不返回1,它返回0到1之間的值Math.floor
基本上截斷了值的小數。
因此,如果Math.random
返回0.3984753005206585
並將其乘以4
則得到1.593901202082634
,在Math.floor
之后變為1
。
當您想從數組中獲取隨機值時,將Math.random
乘以長度,因此它將返回介於0和長度之間的值(但絕不會是長度)。
上述代碼中的anims.length + 1
不正確。
代碼錯了(如Rocket所說)。 它應該是
Math.floor(Math.random()*(anims.length))
但是推理也有一個缺陷:Math.random()不能返回“1”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.