Math.random()

基线 广泛可用

此功能已得到很好的建立,并且可在许多设备和浏览器版本中使用。它已在浏览器中可用,自 2015 年 7 月.

Math.random() 静态方法返回一个大于等于 0 且小于 1 的浮点伪随机数,在该范围内具有近似均匀分布 - 然后可以将其缩放至所需的范围。实现选择随机数生成算法的初始种子;用户无法选择或重置它。

注意:Math.random()提供加密安全的随机数。不要将其用于任何与安全相关的事情。请改用 Web Crypto API,更准确地说,使用Crypto.getRandomValues() 方法。

试一试

语法

js
Math.random()

参数

无。

返回值

介于 0(含)和 1(不含)之间的浮点伪随机数。

示例

请注意,由于 JavaScript 中的数字是具有舍入到最近偶数行为的 IEEE 754 浮点数,因此下面函数声称的范围(不包括Math.random()本身的范围)并不精确。如果选择极大的边界(253或更高),则在极端罕见的情况下,可能会达到通常排除的上限。

获取介于 0(含)和 1(不含)之间的随机数

js
function getRandom() {
  return Math.random();
}

获取两个值之间的随机数

此示例返回指定值之间的随机数。返回的值不低于(并且可能等于)min,并且小于(但不等于)max

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

获取两个值之间的随机整数

此示例返回指定值之间的随机整数。该值不低于min(如果min不是整数,则为min的下一个大于min的整数),并且小于(但不等于)max

js
function getRandomInt(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // The maximum is exclusive and the minimum is inclusive
}

注意:可能很想使用Math.round()来实现这一点,但这样做会导致您的随机数遵循非均匀分布,这对于您的需求可能不可接受。

获取两个值之间的随机整数(含)

虽然上面的getRandomInt()函数在最小值处是包含的,但在最大值处是排除的。如果您需要结果在最小值和最大值处都包含怎么办?下面的getRandomIntInclusive()函数实现了这一点。

js
function getRandomIntInclusive(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // The maximum is inclusive and the minimum is inclusive
}

规范

规范
ECMAScript 语言规范
# sec-math.random

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅