在 JavaScript 中如何生成指定范围内的随机数
如果你想在 10
和 15
之间生成一个随机数,如何通过 JavaScript 实现呢?在这篇文章里,我将通过实例向你介绍。
JavaScript中,Math
对象的 random
方法可以实现返回随机数,然而它有着取值范围的局限性。接下来,让我们看看如何使用这个方法来解决不同范围的问题。
如何在 JavaScript 中使用 Math.random
已知random
方法返回一个 0
和 1
之间的随机浮点数。
示例:
Math.random()
// 0.26636355538480383
Math.random()
// 0.6272624945940997
Math.random()
// 0.05992852707853347
可以注意到,运行结果返回了 0
和 1
之间的随机数。现在我们尝试将此方法延伸到其他取值范围。
如何在 JavaScript 中获取给定范围中的随机数
接下来我们为此构建一个函数:
function getRandom(min, max) {
// 执行代码
}
此函数接收 min
(范围中的最小值)和 max
(范围中的最大值)作为参数。基于此范围和 Math.random
,我们想实现获取随机数:
function getRandom(min, max) {
const floatRandom = Math.random()
const difference = max - min
// 介于 0 和差值之间的随机数
const random = Math.round(difference * floatRandom)
const randomWithinRange = random + min
return randomWithinRange
}
以下是函数的基本逻辑:
- 首先,我们通过
Math.random()
获取一个随机浮点数。 - 接下来,我们求出最大值和最小值的差。
- 随后,我们可以获得
0
和大小差值之间的一个随机数。
为了获得上述随机数,我们只需将(从Math.random
中)获取的随机数与大小差值相乘,随后对结果使用 Math.round
四舍五入取整即可。
例如:
Math.random
返回 0.3 并且大小差值为 5, 其乘积为 1.5。使用Math.round
将其四舍五入到 2(在0
和大小差值5
之间)。Math.random
返回 0.9 并且大小差值为 8, 其乘积为 7.2。使用Math.round
将其四舍五入到 7(在0
和大小差值8
之间)。
现在已经获得了 0
和大小差值之间的一个随机整数,我们可以将其与最小值相加。这样就得到了在最小值和最大值之间的随机整数。最后将此结果作为 randomWithinRange
函数的返回值。
接下来让我们看看此函数的应用实例:
console.log(getRandom(10, 15))
// 14
console.log(getRandom(10, 15))
// 11
console.log(getRandom(10, 15))
// 12
console.log(getRandom(10, 15))
// 15
以上例子中,我们使用 10 作为 min
,15 作为 max
。通过这两个参数调用四次函数,可以注意到结果都是在所提供范围内的随机数。
让我们看看另一个应用实例:
console.log(getRandom(180, 450))
// 215
console.log(getRandom(180, 450))
// 386
console.log(getRandom(180, 450))
// 333
console.log(getRandom(180, 450))
// 442
以上例子中,我们使用 180 作为 min
,450 作为 max
。同样的,结果也在预料之内。
总结
如果你需要在给定范围内生成随机数,我希望这篇文章能提供有用的思路。
在这篇文章里,我解释了 Math.random
的取值范围限制:它只能返回一个 0
和 1
之间的随机数。我接着向你展示了如何应用此数学函数自创一个可重复使用的函数,以生成任何你选择的范围内的随机数。