我尝试使用这个函数来查找两个键之间的随机 int 数,我知道其Math.floor () and Math.random()
工作原理,但我无法理解该函数的逻辑(max-min + 1)
以及min
. 为什么我们需要使用(max-min+1)
然后添加min
?
function random(min, max) {
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
}
console.log(random(5, 10));
的目的
(max - min + 1)
是确定指定范围内可能值的总数,并确保当您将其乘以 时Math.random()
,会考虑该范围内的所有整数。加1对于包含范围的上限至关重要。例如,如果您想生成3到6(含)之间的随机数。范围为3, 4, 5, 6。如果只算的话
(max - min)
就是(6 - 3)
,等于3。如果不加 1,您将拥有3 个不同值(3, 4, 5)的范围,并且上限(6)将被排除。通过在计算中添加1
(max - min)
,您将得到(6 - 3 + 1) ,它等于 4。现在,您有 4 个不同值(3, 4, 5, 6)的范围,包括上限。嗯,这是你一开始通常不会得到的东西,所以让我们来分解一下:
现在让我们看一下您的代码: 上限是 10 下限是 5 Math.random 生成一个伪浮点,例如 0.5
希望这能让大家更好地理解这个问题。