📅  最后修改于: 2023-12-03 14:42:42.038000             🧑  作者: Mango
在编写 Javascript 程序时,有时我们需要在给定范围内获取一个随机整数,本文将为大家介绍几种实现方法。
/**
* 获取指定范围内的随机整数
* @param {number} min - 最小值
* @param {number} max - 最大值(不包括)
* @returns {number} 随机整数
*/
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
上述方法通过 Math.random()
方法获取一个 [0, 1) 范围内的随机小数,再将其乘以给定范围内的长度(即 max - min
),并取整后加上最小值(即 min
),即可得到指定范围内的一个随机整数。
如果更注重随机性,可以使用浏览器 API window.crypto.getRandomValues()
来生成一个符合密码学要求的随机数。
如果你的代码只会在浏览器环境中运行,可以采用以下方法:
/**
* 获取指定范围内的随机整数
* @param {number} min - 最小值
* @param {number} max - 最大值(不包括)
* @returns {number} 随机整数
*/
function getRandomInt(min, max) {
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
const randomNumber = array[0] / (Math.pow(2, 32) - 1);
return Math.floor(randomNumber * (max - min)) + min;
}
上述方法首先创建一个 Uint32Array
,然后利用 window.crypto.getRandomValues()
方法对其进行填充,获取一个随机的无符号 32 位整数。接下来将其除以 2^32-1
,即可得到一个 [0, 1) 范围内的随机小数,然后按照方法一的方式生成指定范围内的随机整数。
如果你在项目中使用 Lodash 库,可以直接使用其中的方法,例如:
/**
* 获取指定范围内的随机整数
* @param {number} min - 最小值
* @param {number} max - 最大值(不包括)
* @returns {number} 随机整数
*/
function getRandomInt(min, max) {
return _.random(min, max - 1);
}
上述方法使用 Lodash 的 _.random()
方法生成指定范围内的随机整数。
本文介绍了三种生成随机整数的方式,你可以根据项目的需要选择其中的一种。如果你对随机数的质量要求很高,可以采用方法二中的方式。