【JavaScript】产生指定范围内的随机整数

104 阅读1分钟

我们要写这样一个函数,输入指定范围的最小值和最大值,返回在这个范围内的一个随机整数:

function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}

解析

首先准备好主要的api是Math.random(),我们知道它会产生 [0,1)(注意左闭右开)范围内的一个浮点数,所以如果我们让它 乘以 (max - min) 这个数,我们会得到 [0,max - min) 范围内的一个浮点数,接着我们再将得到的这个数 加上 min 的话,我们就得到 [min,max) 范围内的一个浮点数,最后我们再使用Math.floor()将这个数向下取整,那就是我们想要的数。

其他范围

我们上述的范围和Math.random()的范围一样都是左闭右开的,即[min,max),如果我们的需求是左闭右闭,即[min,max],由于我们求的是整数,所以由右开到右闭只是范围向右扩一位,因此要求[min,max]可以转换成求[min,max+1),如下:

// 把 max 换成 max+1 即可
function getRandomNumber(min, max) {
    return Math.floor(Math.random() * ((max + 1) - min) + min);
}

相关api

感谢阅读,水平有限,欢迎指正!