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 |
瀏覽器相容性
載入中…