一個數字選擇器範例就是你輸入的欄位與工具從選定閉區間所回傳整數的並排檢視。在典型的逐步操作中,你輸入兩個邊界值(例如 1 和 50),選擇數量為三,保留重複選項開啟,然後從該範圍收到三個以逗號分隔的整數。兩個端點都可能出現,所以要求 1 到 10 可能會回傳 1 或 10,以及它們之間的每個整數。實際操作範例是理解閉區間、結果數量與重複切換如何結合成單一公平抽樣的最清楚方式。下面的逐步操作涵蓋常見設定:小型正整數範圍、跨越零的範圍、從教室規模的數量中進行不重複抽樣,以及該工具單次點擊可接受的最大批次要求。每個範例都會顯示你應輸入的確切欄位、適合該情境的重複設定,以及你應預期的逗號分隔輸出格式。你可以直接複製任何一組設定,然後調整邊界或數量以符合你自己的任務。
亂數產生器是本頁每個範例背後的工具。它在目前的瀏覽器中執行,接受三個數值欄位與一個重複偏好設定,並回傳一份可貼到工作表、腳本或聊天訊息中的逗號分隔清單。你的任何邊界值或結果都不會離開目前的頁面,每次抽樣都使用瀏覽器的 Web Crypto 熵源,而不是標準的 Math.random 函式。

數字選擇器在實務上的作用
數字選擇器是一個小型工具,從定義的閉區間中抽取整數。你提供最小允許值、最大允許值,以及你想要的結果數量。兩個邊界都符合資格,且閉區間可以位於任何位置——兩個正整數之間、兩個負整數之間,或跨越零——只要每個邊界及閉區間的大小都落在 JavaScript 的安全整數範圍內。該工具讀取這三個欄位以及一個重複切換,並以可直接複製的逗號分隔清單形式回傳結果。每次抽樣都使用瀏覽器的 Web Crypto 介面,且該工具採用拒絕抽樣(rejection sampling),使接受的原始值均勻映射到你範圍內的每個整數。更改任何輸入會清除先前的清單,所以過時的結果不會被誤認為是你新設定所產生的結果。
操作範例:從 1 到 50 抽出三個數字
從最簡單的設定開始。在最小值欄位輸入 1,在最大值欄位輸入 50,並選擇結果數量為 3。保留重複切換開啟,讓五十個值中的任何一個都可能出現在任何位置。按下「產生數字」,該工具會回傳 1 到 50 之間(含端點)的三個整數,以一行逗號分隔的格式輸出。一個可能的範例可能是 17, 42, 8——實際輸出無法預測,這正是重點。由於範圍是閉區間,你可能會在任何位置看到 1 或 50。重複相同的要求通常會產生不同的三個數字,因為每次點擊都會抽取新的隨機位元。這是教科書式的教室風格數字選擇器範例,適用於抽獎、挑選練習題,或從編號 1 到 50 的名單中挑選三名志願者。
負數與跨零邊界的範例
邊界不一定要是正數。若要從 -10 到 10 抽取一個整數,請在最小值欄位輸入 -10,在最大值欄位輸入 10,並要求 1 個結果。該閉區間包含 21 個整數(-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10),且該工具回傳其中任何一個的機率相等,包括 -10、0 或 10。此設定適用於溫度計、溫度變化、有號數分數,或任何跨越零的範圍。相同的設定若將數量設為 5 並啟用重複,則會產生五次獨立抽取——同一個負值可能出現超過一次。單一值的範圍也可行:將 -3 同時設為最小值與最大值,無論重複設定為何,都會回傳 -3。
僅不重複範例:從 1 到 20 中挑選五個
關閉重複切換後,該工具在同一份清單中不會回傳相同的整數兩次。將最小值設為 1,最大值設為 20,並要求 5 個結果。該工具使用稀疏部分 Fisher-Yates 洗牌,從二十個可用整數中挑選五個相異的偏移量,並以隨機順序回傳。一個可能的輸出可能是 4, 17, 2, 19, 11。20 個整數中的每一個出現在最終清單中的機率都相同。如果你將數量提高到 21 或以上,該工具會拒絕該要求並顯示明確的錯誤:數量超過範圍中的整數數量,因此無法進行不重複抽取。當選擇編號相異的參與者、抽獎券或測驗位置,且任何參與者不應被選中兩次時,此設定是正確的選擇。
最大批次範例:抽取 1,000 個整數
將數量設為 1,000,該工具將在單次點擊中抽取最多一千個整數。對於像 1 到 100,000 這樣的寬廣範圍並啟用重複,1,000 個結果的樣本可為模擬、隨機化測試資料或下游實驗的種子值提供快速的查詢表。結果清單會以單行逗號分隔的形式輸出,你可以貼到試算表或腳本中。若要對小型範圍中的每個整數進行完全隨機排序,請將數量設為等於閉區間大小,並關閉重複;該工具接著會對整個範圍執行稀疏部分洗牌,並回傳每個整數恰好一次。當你需要的是值的排列而非可能重複的樣本時,這是正確的做法。如果你經常執行批次式抽樣,批次數字選擇器逐步操作涵蓋相同的工作流程並提供更多模式。
日常任務的常見範例設定
下表將常見的日常任務與能產生實用結果的確切邊界、數量及重複設定配對。「你會得到什麼」欄描述的是輸出格式而非特定的計算值,因為每次抽樣都是獨立且不可預測的。
| 任務 | 最小值 | 最大值 | 數量 | 重複 | 你會得到什麼 |
|---|---|---|---|---|---|
| 抽取一張抽獎券 | 1 | 100 | 1 | 關 | 一個 1 到 100 的中獎號碼 |
| 挑選五名志願者 | 1 | 30 | 5 | 關 | 五個相異的座位編號 |
| 進行 d20 風格的抽取 | 1 | 20 | 1 | 關 | 一個 1 到 20 的號碼 |
| 模擬 50 次擲骰 | 1 | 6 | 50 | 開 | 50 個獨立值,允許重複 |
| 洗牌 24 人的名單 | 1 | 24 | 24 | 關 | 全部 24 個值以隨機順序排列 |
| 用於測試的樣本 | 1 | 10,000 | 1,000 | 開 | 1,000 個用於測試資料的整數 |
執行你自己的數字選擇器範例
- 開啟亂數產生器工具,並找到最小值與最大值欄位。
- 將最小的允許整數輸入最小值欄位,將最大的允許整數輸入最大值欄位;兩個端點都是符合資格的結果。
- 使用結果數量控制項,選擇你要從 1 到 1,000 的多少個整數。
- 若允許重複則開啟重複切換,若結果清單中的每個值都必須唯一則關閉。
- 選擇「產生數字」以產生以逗號分隔的整數清單。
- 檢視輸出,然後選取並複製,以用於你的工作表、腳本或抽獎中。
範例如何在每次抽樣間保持公平
兩個設計選擇使結果保持不偏頗。首先,隨機性來自瀏覽器的 Crypto.getRandomValues 介面,它公開了 W3C Web Cryptography 規格所定義的 Web Crypto 原語。其次,該工具採用拒絕抽樣:它會捨棄任何落在模運算不完整尾部的原始隨機值,然後將接受的值映射到所要求的閉區間中。每個整數最終都具有相同數量的可能接受原始值,因此你邊界內的任何數字都不會被過度或不足代表。當關閉重複時,該工具執行稀疏部分 Fisher-Yates 洗牌,因此即使對於非常大的範圍,不重複抽樣在記憶體中仍保持 O(count)。這些機制從輸出中看不出來,但它們正是同一個範例執行兩次不會傾向於相同幾個數字的原因。
一個實際限制影響著上述每個範例:閉區間大小、數量以及每個個別邊界都必須是安全整數。該工具在抽取前會拒絕小數、空白、相反順序的邊界、無限大及不安全的整數。要求範圍容納不下更多唯一值的請求會快速失敗並顯示錯誤,而不是靜默地回傳較少的數字。如果你的任務需要比 JavaScript 安全整數範圍更寬的值,你需要一個接受整數字串而非普通瀏覽器數字的專門系統。
相關閱讀:該吃什麼:命令列與線上選擇器比較。