隨機數產生器
在任意最小值和最大值之間選擇隨機數。整數或小數輸出,有或沒有重複。僅限瀏覽器,使用加密的強隨機性。
min=1, max=100 → 47
在任意最小值和最大值之間選擇隨機數。整數或小數輸出,有或沒有重複。僅限瀏覽器,使用加密的強隨機性。
min=1, max=100 → 47
使用瀏覽器的生成最小值和最大值之間的隨機數 crypto.getRandomValues 對於密碼學上的強隨機性—不可預測 Math.random.
預設行為傳回 1 到 100 之間的 10 個整數。對於擲骰、抽牌、採樣以及任何需要可靠的「真正隨機」選擇的地方很有用。
從參與者清單中選擇一個獲勝者號碼(1 到 N)。密碼隨機;如果有人質疑這個選擇,這是有道理的。
擲一個或多個任一面數的骰子。 1–6 表示 d6,1–20 表示 d20,1–100 表示百分位數。
從 M 清單中隨機選擇 N 行進行快速抽查或 QA 通過。
隨機事件觸發、傷害檢定、戰利品掉落-任何需要檢定的遊戲邏輯。
為 QA 測試資料產生隨機 ID、價格或數量 — 比手動輸入虛假數字要快得多。
該工具使用 Web Crypto API crypto.getRandomValues() 產生加密的強隨機值。在底層,它從作業系統的 CSPRNG 中提取 32 位元無符號整數(例如, /dev/urandom 在 Unix 上)。對於整數輸出,它透過模數縮減將原始 32 位元值對應到請求的範圍,拒絕超出範圍的值以消除偏差。對於十進制輸出,它除以 2^32 以產生 [0,1) 中的統一浮點數,然後縮放到所需的間隔。這避免了使用可預測的線性同餘產生器 Math.random().
該工具永遠不會播種;每次呼叫都會拉動新的熵。透過將產生的數字儲存在客户端中來強制執行重複預防 Set 並丟棄衝突,直到滿足請求的計數(實際上受範圍大小的限制)。所有計算都發生在瀏覽器中;沒有資料透過網路發送。
這種基於瀏覽器的生成器與常見的程式替代方案相比如何?
| 這個工具 | Python 隨機模組 | 試算表 (蘭德) | |
|---|---|---|---|
| 隨機性來源 | 加密 (crypto.getRandomValues) | 梅森扭曲者(可預測) | 電子表格特定的 PRNG(通常是線性同餘) |
| 整數/小數 | 兩者均具有可配置的小數位 | randint() 表示整數,uniform() 表示小數 | RAND() 只傳回小數; RANDBETWEEN() 用於整數 |
| 重複處理 | 可選的客户端強制唯一性 | 手動編碼(sample() 或 while 迴圈) | 無內建;需拖曳和手動檢查 |
| 隱私和離線 | 完全離線,無網路通話 | 腳本在本地運行,但程式碼必須可信 | 線上電子表格將資料傳送到伺服器 |
機械地產生隨機數的概念可以追溯到古代的骰子(公元前 3000 年)。在計算領域,約翰·馮·諾依曼 (John von Neumann) 在 1946 年提出了中方方法,但現代加密安全偽隨機數產生器 (CSPRNG) 在 20 世紀 90 年代出現,採用了 Yarrow (1999) 和 Fortuna 等演算法。 Web Crypto API 於 2014 年實現標準化,使瀏覽器應用程式可以直接存取作業系統的熵池——取代了較弱的熵池 Math.random() 在大多數引擎上,它使用非加密 PRNG,如 xorshift128+。
它使用 crypto.getRandomValues — 瀏覽器的加密安全來源。適合抽獎和其他高風險抽獎。
預設情況下,是的 - 每次抽獎都是獨立的,因此可以重複。若要從範圍中選擇唯一的數字,請產生超出您需要的數字並使用以下命令進行重複資料刪除 刪除重複行.
預設值僅是整數。對於小數,乘以你的界限並除以輸出(例如 min=0,max=10000,然後在你的頭腦中除以 100)。
對於任何實際目的都無法區分。加密隨機性至少與您可以滾動的任何實體骰子或硬幣一樣公平。