Math.random()
Math.random() 静态方法返回一个浮点数,一个伪随机数,该数字大于或等于 0 且小于 1,在此范围内近似均匀分布。你可以将其缩放到你想要的范围。该实现选择随机数生成算法的初始种子;用户无法选择或重置它。
注意: Math.random() 不提供加密安全的随机数。请勿将其用于任何与安全相关的用途。请改用 Web Crypto API,更具体地说,是 Crypto.getRandomValues() 方法。
试一试
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
console.log(getRandomInt(3));
// Expected output: 0, 1 or 2
console.log(getRandomInt(1));
// Expected output: 0
console.log(Math.random());
// Expected output: a number from 0 to <1
语法
js
Math.random()
参数
无。
返回值
介于 0(包含)和 1(不包含)之间的浮点数,伪随机数。
示例
请注意,由于 JavaScript 中的数字是具有四舍五入到最接近偶数的 IEEE 754 浮点数,因此下面各函数声称的范围(不包括 Math.random() 本身)并不完全准确。通常,声称的最大值是无法达到的,但如果 Math.random() 返回一个非常接近 1 的数字,那么微小的差异可能无法在请求的最大值处表示,因此会导致最大值被达到。
获取一个介于 0(包含)和 1(不包含)之间的随机数
js
function getRandom() {
return Math.random();
}
获取一个介于两个值之间的随机数
此示例返回一个介于指定值之间的随机数。返回的值不低于(并且可能等于)min,且小于(且不等于)max。
js
function getRandomArbitrary(min, max) {
return Math.random() * (max - 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® 2026 语言规范 # sec-math.random |
浏览器兼容性
加载中…