Javascript 以下示例之间的差异(随机数)
我无法理解以下两个例子之间的区别:Javascript 以下示例之间的差异(随机数),javascript,Javascript,我无法理解以下两个例子之间的区别: var numbers = ['one', 'two', 'three']; 例1: console.log(numbers[Math.floor(Math.random() * numbers.length - 1) + 1]) 例2: console.log(numbers[Math.floor(Math.random() * numbers.length)]) 下面是一个快速分解,以及在试图理解此类问题时应如何推理: Math.random() -
var numbers = ['one', 'two', 'three'];
例1:
console.log(numbers[Math.floor(Math.random() * numbers.length - 1) + 1])
例2:
console.log(numbers[Math.floor(Math.random() * numbers.length)])
下面是一个快速分解,以及在试图理解此类问题时应如何推理:
Math.random() -> outputs number in the [0, 1) range (0 <= x < 1)
names.length = 3
Math.floor() -> rounds down or removes any trailing decimals (0.9 -> 0, 1.245 -> 1)
第二个例子:
console.log(numbers[Math.floor(Math.random() * numbers.length)])
-> Math.floor((0 <= x < 1) * 3)
-> Math.floor(0 <= x < 3)
Possible indices are of the set { 0, 1, 2 }
console.log(数字[Math.floor(Math.random()*numbers.length)])
->Math.floor((0 Math.floor)(0第一个示例永远不会选择“一”
。编辑哦,等等,我会通过运行它来获取:)检查您自己。var numbers=['one','two','three'];console.log(numbers[Math.floor(Math.random()*numbers.length-1)+1])console.log(numbers[Math.floor(Math.random()*numbers.length)])输出:一个输出:一个
对。问题的实际意义是什么?你想达到什么?我试图理解两者之间的区别以及为什么会起作用…我应该在某一点上得到数字[-1],但我不…对吗?数学。随机
范围是0≤ x<1
@GabrielePetrioliFixed@kugi很乐意帮忙。欢迎来到SO!
console.log(numbers[Math.floor(Math.random() * numbers.length)])
-> Math.floor((0 <= x < 1) * 3)
-> Math.floor(0 <= x < 3)
Possible indices are of the set { 0, 1, 2 }