Tools100% 本地
← 所有工具

亂數產生器

crypto.getRandomValues · 均勻 · 瀏覽器內

crypto.getRandomValues 中抽取密碼學隨機的整數或小數。本頁使用拒絕取樣,所以結果在任意範圍內都均勻 — 沒有取模偏差。可設定範圍、數量、小數位、排序方式、輸出分隔符,以及「僅唯一」模式。
模式
範圍
數量
唯一
排序
格式
 
waiting
Click Generate
點擊複製

為何這是「真亂數」

瀏覽器暴露兩種隨機來源:Math.random(),一個快速但每次執行確定的偽亂數產生器;以及 crypto.getRandomValues(),一個由作業系統熵池播種的密碼學安全 RNG — 與產生 TLS 工作階段金鑰使用的來源相同。本頁對你抽取的每個值都使用後者。

避免取模偏差

簡單的「由 RNG 產生整數」實作會做 rand() % n — 當 n 不能整除 RNG 字長時,這會讓範圍低端略受偏向。偏差很小但真實存在,在百萬級取樣下可被輕易偵測出來。

小數模式

當你請求小數時,本頁從 crypto.getRandomValues 中讀 53 位元、得到 [0, 1) 的均勻值,再縮放到目標範圍。最多可用 15 位精度 — 這是 IEEE-754 雙精度浮點數的實際上限,也就是 JavaScript 的數值型別。

唯一模式

開啟不允許重複後,本頁對整數範圍執行部分 Fisher–Yates 洗牌,這能保證抽到的唯一值均勻分布 — 這是無放回公平取樣的標準做法(也是洗牌或不重抽的抽獎所用演算法)。

隱私

所有值都在本地產生。本頁在最初的靜態資源載入之後不發任何網路請求,也沒有分析腳本。你的輸入與產生的值都不會離開頁面。