Math.random()
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 的浏览器中加载。