Math.random()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

瀏覽器相容性

另見