隨機數字產生器使用說明
大多數時候填個範圍、按一下就夠了。這篇說明寫給需要「不重複」「可證明公平」或「批次資料」的情境,講清楚每個選項的邊界。
每個選項怎麼用
| 選項 | 作用 | 注意 |
|---|---|---|
| 最小值、最大值 | 抽取範圍 | 範圍包含兩端,1 到 100 能抽到 1 和 100 |
| 數量 | 這一批要幾個結果 | 一次最多 10000 個 |
| 數字類型 | 整數或小數 | 小數可以保留 0 到 6 位 |
| 是否允許重複 | 同一批裡能否出現相同的數 | 只管目前這一批,再產生一次可能抽到上次的數 |
| 結果排序 | 保持抽出順序、升冪或降冪 | 抽獎公布順序時選「保持原順序」 |
| 排除值 | 跳過指定的數字 | 超出範圍的排除值會被忽略 |
| 種子 | 讓結果可重現 | 任意文字都可以,區分大小寫 |
不重複抽取的規則
選「不允許重複」時,產生器會記住這一批已經抽出的數,再抽到就跳過重抽,所以不會出現兩個相同的值。前提是範圍裡有足夠多的數:可用數量等於最大值減最小值加一,再減去排除掉的個數。
舉個例子:1 到 30 排除 4 和 13,可用的是 28 個數。想抽 30 個不重複的就不夠,表單下方會直接提示,產生按鈕也會暫時無法點選。
種子:讓結果可以重現
不填種子時,每次結果都不同。填了種子,相同的設定會得到完全相同的一組數字,換裝置、換人也一樣。這能解決「怎麼證明抽獎沒動手腳」的問題:抽獎前公布種子和設定,抽完大家都能自己驗證。
- 事先在群組公布種子,例如活動名加日期:週五團建-1024。
- 當眾用約定的範圍和數量產生。
- 任何人填同樣的設定和種子,都會得到同一組結果。結果區下方的「複製設定」會把整套參數複製成一句話。
這裡的隨機有多隨機
不填種子時,數字來自瀏覽器內建的 crypto.getRandomValues,這是作業系統提供的加密等級隨機來源,比常見的 Math.random 更難預測。填了種子時,改用 mulberry32 偽隨機演算法,它的目標是可重現,不追求不可預測。
兩種方式在範圍內的分布都是均勻的,日常抽獎、教學和遊戲足夠用。涉及法律效力的彩券開獎、密碼和金鑰產生,請使用專門的系統。
常見用法
| 情境 | 建議設定 |
|---|---|
| 抽獎 | 依參與人數設範圍,不重複,保持原順序,公布種子 |
| 課堂點名 | 1 到班級人數,不重複,抽完把已點到的座號填進排除值 |
| 擲骰子 | 1 到 6,允許重複,數量填擲的次數 |
| 分組 | 1 到總人數,數量等於總人數,不重複,依順序每 N 個一組 |
| 測試資料 | 小數模式,固定種子,每次跑測試都拿到同一批資料 |
小數模式的細節
小數模式會先依位數把範圍換算成整數刻度再抽取。例如 0 到 1 保留 3 位,實際是在 0 到 1000 之間抽整數再除以 1000,所以 0.000 和 1.000 都可能出現,每個值的機率相同。
排除值也依同樣的精度比較:保留 2 位時排除 0.5,會排除 0.50。0.1 到 0.15 保留 1 位時只有 0.1 一個可用值,保留 3 位時則有 51 個。