亂數產生器是一種工具,會從您定義的範圍中挑選一個或多個整數,每個值出現的機率與範圍內其他任何值相同,包括端點。要使用它,您輸入允許的最小整數和允許的最大整數,選擇您想要的值數量,決定是否允許重複,然後點擊產生按鈕。結果會以逗號分隔的清單形式呈現,您可以複製或直接在螢幕上讀取。本文將逐步帶您了解如何使用我們基於瀏覽器的亂數產生器,它結合了這些輸入與加密亂數以及拒絕取樣,確保沒有任何值比其他值佔優勢。只需三個輸入和一個按鈕,這個工具就能滿足大多數日常需求——課堂抽獎、抽籤活動、無骰子遊戲擲骰、試算表的範例資料,以及隨機 A/B 清單——無需安裝軟體,也不會將您的範圍或結果傳送到任何伺服器。
您不需要程式語言、試算表公式,也不需要拿著硬幣。頁面會讀取您的整數、進行驗證、從瀏覽器端的加密來源抽取,並在一秒內給您一份完成的清單。本指南的其餘部分將說明每個輸入的作用、底層抽樣如何保持無偏差,以及在安全整數範圍邊緣可能遇到的限制。

如何使用此工具產生亂數
開啟隨機數字產生器頁面,所有輸入會在同一個畫面上顯示。請依序按照以下步驟操作。
- 在最小值欄位中輸入您願意接受的最小整數。允許負值,因此範圍可以低於零。
- 在最大值欄位中輸入您願意接受的最大整數。兩個端點都符合資格——1 到 10 的範圍可以合理地產生 1、10 或介於其中的任何整數。
- 輸入您需要的結果數量,範圍從 1 到 1,000。這是工具在單次點擊中將抽取的整數數。
- 決定是否允許重複。若是獨立抽取且同一數字可能出現多次,請保持啟用;若輸出中的每個值都必須不同,請關閉此選項。
- 點擊產生數字按鈕。清單會以逗號分隔的整數形式顯示,您可以選取並複製。
- 如果您之後更改任何設定,先前的清單會自動清除,這樣舊的結果就不會被誤認為來自新範圍的輸出。
若要對小範圍內的每個整數進行完整的隨機排序——適用於座位表或循環賽配對——請將數量設定為等於範圍大小,並停用重複。對於每次抽取都是獨立的重複模擬,請保持啟用重複,並在需要新樣本時產生新的列表。
每個設定的作用
每個輸入都會影響輸出的不同部分。下表摘要說明當您調整單一設定時會產生什麼變化,讓您能根據工作需求選擇對應的控制項。
| 設定 | 您輸入的內容 | 對輸出的影響 |
|---|---|---|
| 最小值 | 整數(允許負值) | 可出現的最小值;端點符合資格 |
| 最大值 | 整數(允許負值) | 可出現的最大值;端點符合資格 |
| 結果數量 | 1 到 1,000(含) | 每次點擊回傳的整數數量 |
| 重複 | 允許或禁止 | 允許 = 獨立抽取,可重複;禁止 = 每個值都不重複 |
包含端點的範圍大小也必須能以 JavaScript 安全整數精確表示——這是一個技術上限,可避免在範圍非常大時,工具進行捨入或在不知情的情況下遺失結果。反向範圍(最小值大於最大值)、小數值、空白欄位、無限大以及不安全的整數都會被拒絕,而不是在背景中自動修正。
無偏差抽樣的底層運作原理
來自瀏覽器的原始亂數位元並無法整除到每個範圍。如果您用簡單的餘數運算將八個亂數位元映射到 1 到 6 的整數,那麼 1、2、3 和 4 出現的頻率會比 5 和 6 略高,因為剩餘的位元模式群組並不完整。這種小偏差在單次抽取中不明顯,但在數千次抽取後會累積放大。
此產生器透過一種稱為拒絕取樣的方法來避免這個問題。頁面從瀏覽器的 Crypto.getRandomValues 介面擷取 32 位元字組,將它們組合成一個可精確表示的 53 位元值,檢查該值是否落在完整的餘數群組內,並捨棄任何落在不完整尾端的值。重試抽取會立即執行,只有完全被接受的值才會映射到所要求的範圍——這樣每個整數都會獲得相同數量的可能原始接受值。您可以透過 MDN Crypto.getRandomValues 參考文件 和 W3C Web Cryptography API 閱讀加密來源的底層規格。
當禁止重複時,此工具會使用稀疏的部分 Fisher-Yates 洗牌:它不會為範圍內的每個整數建立陣列(當範圍相距甚遠時這可能非常龐大),而是以 O(count) 的記憶體對小型偏移清單進行洗牌,然後將偏移對應回您的範圍。這樣就能在範圍很大時避免記憶體爆炸,同時產生不重複的值。
亂數產生器的常見用途
最常見的用途可歸納為幾種典型的模式。
- 課堂與抽籤活動。從已知名單中挑選一個有編號的參與者。停用重複以避免同一個人被抽中兩次。
- 試算表與測試的範例資料。在選定範圍內產生固定的不重複 ID 清單,以填入試算表。我們關於在 Google 試算表中產生亂數的指南說明了如何直接在試算表內處理相同的需求。
- 遊戲與骰子的替代方案。擲虛擬骰子、洗牌遊戲順序,或隨機排列格線。骰子產生器涵蓋了專屬的骰子形狀,如果您想要專門的 d4 到 d20 輸出。
- 隨機排序。將數量設定為等於範圍大小,並停用重複,即可排序小範圍內的每個項目。
- 模擬與 A/B 測試。保持啟用重複,讓每次抽取都獨立於前一次。
這些用途都不需要將您的數字傳送到任何地方。頁面完全在目前的瀏覽器工作階段中執行,因此您選擇的範圍和收到的數值絕不會離開您的裝置。
值得了解的邊界與特殊情況
此工具在其適用範圍內相當寬容,並對其邊界有明確的設計。以下規則是刻意執行的。
- 僅限安全整數範圍。輸入僅限於 JavaScript 安全整數,因為瀏覽器無法總是精確表示更大的數值文字。對於超出安全整數上限的值,您需要一個接受整數字串的任意精度系統。
- 包含端點的範圍大小必須精確。大小無法以安全整數精確表示的範圍會被拒絕。這可防止工具將經過捨入或差一的結果當作精確結果呈現。
- 不可能的不重複請求會明確失敗。如果您要求從 1 到 3 的範圍中抽取五個不重複的值,產生器會回報該請求不可能,而不是無限期重試或在不知情的情況下回傳較少的數字。
- 每次呼叫最多 1,000 個數字。每次操作 1 到 1,000 的上限可避免意外產生耗用大量記憶體的請求,並讓結果在螢幕上保持可讀性。
- 重要抽取不提供稽核軌跡。頁面不會發布種子、簽署過的紀錄、外部亂數信標或可重現的稽核軌跡。訪客之後無法證明是哪個瀏覽器的熵產生了特定清單,因此請遵循您組織針對獎品、受規範的抽獎、存取控制、密碼、權杖或其他重要決策所要求的獨立稽核程序。
請將輸出視為方便的通用隨機整數——在所要求的範圍內是公平的、抽取方式透明,並完全在您的工作階段中本機執行。
相關閱讀:在 Excel 中不使用公式建立隨機團隊。