隨機數生成器:指定範圍生成隨機數字(可去重/批次,2026)
隨機數生成器:在指定範圍內生成隨機數字,可去重、可批次,講清偽隨機vs真隨機、模除偏差、抽獎別用普通隨機數的安全提醒。
隨機數生成器:在指定範圍內生成隨機數字,可去重、可批次,講清偽隨機vs真隨機、模除偏差、抽獎別用普通隨機數的安全提醒。
下面這個隨機數生成器工具,純瀏覽器本地執行,即時出結果不上傳資料。往下有原理和使用說明。
隨機數生成器就是在你指定的範圍裡(比如 1 到 100)吐出無法提前預測的數字,可選去重、可一次批次生成——抽獎、隨機分組、搖號排序、問卷抽樣、遊戲點數都靠它。上方工具直接輸範圍就能出結果,下面講清它背後的原理和幾個容易踩的坑。
螢幕上幾乎所有"隨機數"其實分兩類。偽隨機(PRNG)靠一個數學演算法從"種子"推算出來,只要種子相同,序列就能完整復現——它不是真亂,是"看起來亂"。大多數程式語言預設用的是梅森旋轉演算法(Mersenne Twister,MT19937),週期長達 219937−1,且做到 623 維均勻分佈,統計性質優秀,所以成了科學計算和遊戲的預設選擇(來源:ACM TOMACS 原始論文)。真隨機(TRNG)則從物理現象取"熵",比如熱噪聲、散粒噪聲、電路抖動、大氣噪聲,結果不可復現(來源:Wikipedia: Hardware RNG)。
它用一組收音機接收大氣噪聲(本質是閃電產生的無線電靜電),每臺電臺約每秒生成 12000 位元,分佈在哥本哈根、都柏林等地,再把連續位元流轉成整數或高斯分佈輸出。對多數用途,這種熵比純演算法偽隨機更接近"真亂"(來源:RANDOM.ORG FAQ)。
把一個大隨機數直接用取餘(%)壓進小範圍,是最常見的錯誤寫法。當範圍長度不能整除生成器的取值總數時,靠前的那些數字會比靠後的多分到一次機會,分佈就不均勻了——這就是 modulo bias(模除偏差)。正確做法是"拒絕取樣":落在偏差區間的數字直接丟棄重抽,保證每個數機率完全相等。一個合格的範圍隨機工具應當在內部處理掉這一步,你不必操心,但知道它存在能幫你判斷工具靠不靠譜。
批次生成時"是否去重"對應統計學裡兩種抽樣。可重複是"有放回抽樣",每次都從完整範圍裡抽,同一個數可能出現多次,適合模擬擲骰子、重複實驗。去重是"無放回抽樣",抽出的數不再參與,適合抽獎不撞號、隨機排座位、發放唯一編號。注意:去重時想要的個數不能超過範圍容量(1–10 裡抽不出 11 個不重複的數)。
| 型別 | 是否可預測 | 典型場景 |
|---|---|---|
| 偽隨機 PRNG | 知道種子即可復現 | 遊戲、抽樣、教學、模擬 |
| 真隨機 TRNG | 物理熵源,不可復現 | 彩票開獎、科研取樣 |
| 密碼學安全 CSPRNG | 即使知道演算法也猜不出 | 密碼、令牌、驗證碼 |
瀏覽器裡的 Math.random() 和普通偽隨機不是密碼學安全的,輸出理論上可被推斷。凡是涉及密碼、重置連結、抽獎防作弊、優惠碼這類"被猜到就出事"的場景,要用專門的 CSPRNG——Python 的 secrets 模組、JS 的 crypto.getRandomValues(),而不是普通隨機函式(來源:Practical Cryptography for Developers)。本工具適合日常抽籤、分組、演示,正式抽獎建議結合可留痕、可公證的方案。
重新整理後數字一樣,是壞了嗎? 通常不是。如果工具固定了種子或快取了結果,同樣輸入會得到同樣輸出,這正是偽隨機的特性;換個種子或點重新生成即可。
能保證絕對均勻嗎? 單次不保證——隨機本就允許連續出現相近數字;樣本量越大,各數字出現頻率才越接近相等,這是均勻分佈的含義(來源:Wikipedia: Random number generation)。
範圍兩端取得到嗎? 看工具定義,多數"指定範圍"是閉區間,即最小值和最大值本身都可能被抽中。