計算器2026-05-10

亂數產生器:PRNG 演算法、真隨機性以及何時重要

閉上眼睛,說出 1 到 10 之間的一個隨機數字。如果你說的是 7,那麼你並不孤單——人類非常不擅長隨機選擇,一貫偏好奇數並避免極端值。一個合適的亂數產生器(RNG)消除了這種認知偏差,產生遵循數學均勻分佈的數字,其中範圍內的每個值被選中的機率完全相同。但並非所有隨機性都是平等的:偽隨機(模擬隨機性的演算法)和真隨機(來自物理熵源,如大氣雜訊或放射性衰變)之間的界限取決於你的使用案例。對於樂透抽獎或加密金鑰,你需要密碼學安全的隨機性;對於決定展示哪個著陸頁變體的 A/B 測試,一個快速的偽亂數產生器(PRNG)就足夠了。我們的免費線上 RNG 允許你設定任何整數範圍,產生單個或多個值,並可選擇應用種子以實現可重現序列——一切都在瀏覽器本機執行,不收集任何資料。

casino

隨機數產生器

免費 · 無需註冊

免費試用此工具 →open_in_new

分步指南

1

設定你的數字範圍

定義隨機範圍的最小值和最大值。產生器在此範圍內產生包括兩端點的整數——設定 1 到 6 用於虛擬擲骰子,1 到 100 用於百分比投擲,或任何自訂範圍。該工具還支援一次產生多個值(每次點擊最多 100 個數字),可以選擇允許或不允許重複。對於超過 1,000,000 的範圍,介面自動切換到更高效的產生演算法以保持結果即時。

2

選擇隨機模式

在三種模式之間選擇:標準 PRNG(快速,可透過種子重現)、加密 API(使用 window.crypto.getRandomValues 提供密碼學級別的隨機性),或種子 PRNG(輸入種子值以每次產生完全相同的序列)。加密 API 模式較慢——通常比 PRNG 慢 10-50 倍——但直接從作業系統獲取熵,適用於密碼產生、金鑰衍生和安全敏感應用。標準模式使用梅森旋轉演算法變體,非常適合遊戲、抽樣和日常隨機性。

3

產生並驗證分佈

點擊產生,即時看到你的亂數。該工具包含一個基本分佈視覺化——在產生許多數字後,頻率長條圖顯示分佈是近似均勻(應該是這樣)還是偏斜的。對於種子模式,複製種子值可以在任何機器上重現相同的序列——適用於確定性測試、遊戲中的程序生成和可重現的研究。

使用技巧與最佳實踐

check_circle

真亂數產生器(TRNG)從物理過程中獲取熵——大氣雜訊、電路中的熱雜訊、放射性衰變計時,甚至熔岩燈的運動(Cloudflare 著名的 LavaRand)。相比之下,偽隨機產生器是確定性的:給定相同的種子,它們產生完全相同的序列。對於 99% 的線上應用,PRNG 完全足夠。

check_circle

梅森旋轉演算法(MT19937)的週期為 2 的 19937 次方 - 1——這是一個如此巨大的數字,如果你每秒產生十億個數字,你需要超過 10 的 6000 次方年才能看到序列重複。它是 Python、Ruby、R 和許多其他語言的預設 PRNG。我們的標準模式使用該演算法的變體。

check_circle

對於密碼學使用(密碼、權杖、金鑰),始終使用 Crypto.getRandomValues() 或作業系統級別的熵源——永遠不要使用 Math.random()。V8 中標準的 JavaScript Math.random() 使用 xorshift128+,它很快但可預測:研究人員已經展示了在僅觀察幾千個輸出後重建內部狀態的實用攻擊。

check_circle

均勻分佈意味著範圍內的每個值都有相等的機率。擲一個公平的 6 面骰子應該在多次投擲中給每個面約 16.67% 的機率。高斯(常態)分佈是另一種情況——值圍繞均值聚集,極端值很少見。我們的工具僅產生均勻分佈;如果你需要高斯分佈,可以對兩個均勻亂數應用 Box-Muller 轉換。

check_circle

種子 PRNG 對於可重現性至關重要。像 Minecraft 這樣的遊戲使用種子產生整個世界——在任何機器上輸入相同的種子就能獲得相同的地形。程序內容產生、科學模擬和隨機化 A/B 測試框架都依賴種子來完全重做相同的實驗。

check_circle

在為樂透或贈品產生亂數時,記錄時間戳、種子、使用的演算法和輸出。發布所有這些資訊。任何人都可以透過使用相同種子執行相同演算法來驗證結果。這就是可證明公平系統的運作方式——它消除了任何操縱的嫌疑。

check_circle

生日悖論適用於亂數產生:如果你在大小為 N 的範圍內產生亂數,只需要大約根號(2N) 次抽取,碰撞(重複)就變得比不發生碰撞更可能。在 1-365 的範圍內,只需要 23 個人就有 >50% 的機率共享生日。在執行贈品或產生唯一 ID 時,請考慮這種碰撞機率。

check_circle

對於 A/B 測試:隨機分配到變體 A 或 B 應該使用 (user_id + experiment_seed) 的雜湊在伺服器端完成,而不是在用戶端使用 Math.random()。用戶端隨機化可能導致單個工作階段內的變體閃爍,並使除錯時的精確分配重現更加困難。

常見問題解答

真隨機數來自物理熵源(熱雜訊、放射性衰變、光子計時),真正不可預測——即使完全知道宇宙的狀態,也無法確定下一個值。偽隨機數來自確定性數學演算法;給定演算法的內部狀態(種子),整個序列完全可預測。真隨機性慢、昂貴且不可重現。PRNG 快速、廉價且可重現——對於統計目的,只要使用具有足夠長週期的良好演算法,它們與真隨機性無法區分。

隨機性不僅僅是關於從帽子裡選一個數字——它是電腦科學、統計學、安全性和遊戲的基礎工具。無論你需要快速擲骰子、可重現的研究資料集還是密碼學強度的權杖,理解哪種類型的隨機性適合你的使用案例是成功的一半。我們的免費 RNG 在一個地方為你提供所有三種模式。

免費試用此工具 →open_in_new