JavaScript:生成范围内的随机数

时间:2019-02-22 18:46:10

标签: javascript

我开始学习JS,并且正在观看有关在一定范围内生成随机数的视频。

这是我发现的第一种方法:

function randomRange(myMin, myMax) {

   return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;
}
console.log(randomRange(10, 20));

这是我发现的第二种方法:

function randomRange(myMin, myMax) {
    return Math.floor(Math.random() * 11) + 10;
}
console.log(randomRange());

因此,我对这两种方法中的任何一种是否比另一种更好?我发现第二种方法更容易理解。它会生成10到20之间的随机数,因此10是开始,加号11是结束。干杯!

2 个答案:

答案 0 :(得分:0)

差异是

在第一个函数中,您将参数传递到myMin myMax中,该参数允许您基于参数生成随机数。

function randomRange(myMin, myMax) {

   return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;
}
console.log(randomRange(10, 20));

第二个函数,您具有形式参数,但由于该范围是静态/硬编码的(11和10),因此并未真正在函数中使用它们。

// You can just do function randomRange() {} without the formal parameters.
function randomRange(myMin, myMax) {
    return Math.floor(Math.random() * 11) + 10;
}
console.log(randomRange());

结论是,第一个函数优于第二个函数,原因是它允许您在指定范围内生成随机数。

答案 1 :(得分:0)

两个函数都在做相同的事情,除了第二种方法只是将参数硬编码为myMin = 10和myMax = 20。因此,第一种方法可用于不同的范围,但是第二种方法将始终返回10到20范围内的随机数。

如果将第一个版本中的myMin和myMax分别替换为10和20,则可以将其简化为第二个版本:

return Math.floor(Math.random() * (20 - 10 + 1)) + 10;

return Math.floor(Math.random() * (11) + 10;