📜  javascript获取给定范围内的随机整数 - Javascript(1)

📅  最后修改于: 2023-12-03 14:42:42.038000             🧑  作者: Mango

Javascript获取给定范围内的随机整数

在编写 Javascript 程序时,有时我们需要在给定范围内获取一个随机整数,本文将为大家介绍几种实现方法。

方法一:Math.random()
/**
 * 获取指定范围内的随机整数
 * @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),即可得到指定范围内的一个随机整数。

方法二:window.crypto.getRandomValues()

如果更注重随机性,可以使用浏览器 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

如果你在项目中使用 Lodash 库,可以直接使用其中的方法,例如:

/**
 * 获取指定范围内的随机整数
 * @param {number} min - 最小值
 * @param {number} max - 最大值(不包括)
 * @returns {number} 随机整数
 */
function getRandomInt(min, max) {
  return _.random(min, max - 1);
}

上述方法使用 Lodash 的 _.random() 方法生成指定范围内的随机整数。

总结

本文介绍了三种生成随机整数的方式,你可以根据项目的需要选择其中的一种。如果你对随机数的质量要求很高,可以采用方法二中的方式。