我在理解一个简单的概念时遇到了问题。代码下方:
var arr = [1, 3, 7, 9, 12, 5, 4, 6];
var randomArr = Math.floor(Math.random()*arr.length);
console.clear();
console.log(randomArr);
我不明白这一点,为什么Math.floor(Math.random()*arr.length)
每次Math.floor(Math.random())
总是返回0
时会返回一个随机数?根据我的理解,Math.floor(Math.random())
将始终返回0
,因为他生成了0
和1
之间的值(1
未包括在内),所以不应该{0}} Math.floor(Math.random()*arr.length)
总是在我的情况下返回8
?
这是我目前无法理解的,在此事上无法找到任何内容。
感谢。
答案 0 :(得分:6)
Math.floor()
返回小于或等于给定数字的最大整数。换句话说,它将数字向下舍入到最接近的整数。
在你的代码Math.random()*arr.length
中可能会返回一个实数,因为Math.random
可能返回.3且数组长度为8,所以代替随机数组元素为2.4,你得到2 ,如果你想能够选择数组元素的索引,这会更有意义。如果Math.random()
返回.5,那么您将得到一个整数,但可能性是在大多数情况下您不会得到整数。
打破Math.floor(Math.random()*arr.length)
:
arr.length
是8 Math.random()
返回0到1但不包括1的值。Math.floor
将结果8次Math.floor
向下舍入.3
作为Math.random()
返回的值的示例:Math.floor( .3 * 8)
Math.floor(2.4)
2
因此,给定代码Math.floor(Math.random()*arr.length)
,您最终会得到一个从0到7的整数,然后可以使用其中的任何一个来选择arr
数组中的项目,例如{{1 }}