🇨🇳 简体中文
← 返回首頁

🎲 隨機數產生器

指定範圍,產生一個或多個隨機數字。

這是什麼工具?

隨機數產生器 (RNG) 是一種按序列產生數字的工具或演算法,其中每個數字與先前的數字沒有可預測的關係。隨機數產生是計算、密碼學、統計、遊戲、科學模擬和日常決策的基礎。有兩類:偽隨機數產生器 (PRNG),它使用數學演算法產生看似隨機但實際上是確定性的序列;真隨機數產生器 (TRNG),它從大氣雜訊、放射性衰變或熱雜訊等物理現像中獲取隨機性。對於大多數日常應用——選擇彩票號碼、擲虛擬骰子、選擇隨機樣本或洗牌播放清單——高品質的 PRNG 就足夠了。對於產生加密金鑰或會話令牌等安全敏感應用程序,需要加密安全偽隨機數產生器 (CSPRNG),因為如果發現標準 PRNG 的內部狀態,則可以預測標準 PRNG。該工具提供了一種簡單的方法來產生您指定的任何範圍內的隨機數,並提供獨特(非重複)結果的選項以及用於採樣、抽獎和模擬的可自訂數量。

計算原理

PRNG 通常使用 Mersenne Twister 或線性同餘產生器 (LCG) 等演算法。基本 LCG 公式為X(n+1) = (a × X(n) + c) mod m,其中 X 是序列值,a 是乘數,c 是增量,m 是模數。初始值 X(0) 稱為種子。因為 PRNG 是確定性的,所以相同的種子總是產生相同的序列。 JavaScript 的數學.隨機()使用 PRNG,適用於遊戲和 UI 效果,但出於安全考慮,切勿使用。出於加密目的,請使用crypto.getRandomValues()在瀏覽器或秘密在 Python 中,它取自作業系統的 CSPRNG。為了公平洗牌,Fisher-Yates 演算法迭代數組,將每個元素與剩餘未洗牌部分中隨機選擇的元素交換,確保完全均勻的排列。
Ad

使用方法

使用此工具產生隨機數字非常簡單。步驟一:輸入範圍的最小值。步驟2:輸入範圍的最大值。步驟3:指定要產生多少個隨機數。第4步:選擇您是否只需要唯一編號(無重複)或允許重複。第5步:點擊“生成”即可立即查看結果。該工具會產生在指定範圍內均勻分佈的數字,這意味著每個數字被選擇的機率相同。對於抽獎或採樣等每次挑選都必須唯一的應用,請啟用唯一選項。您可以根據需要多次產生新的數字組 - 每次單擊都會產生新的獨立抽獎,並且不會記住先前的結果。

參考對照表

使用案例典型範圍筆記
彩票 (6/49)1–49, 6 個獨特沒有重複,經典格式
標準骰子1–6一個或多個骰子
抽獎1–100+唯一的票號
隨機抽樣1–N統計調查、A/B 拋硬幣1||棋盤遊戲。 Math.random
棋盤遊戲旋轉器1–12遊戲機制
投擲硬幣0–1二元決策
加密金鑰全位元組範圍需要 CSPRNG,而不是 Math.random

常見問題

常見問題

偽隨機和真隨機有什麼差別?
伪随机数生成器 (PRNG) 使用数学算法生成统计上看似随机但完全确定性的序列。给定相同的起始种子,它们将始终复制相同的序列。真隨機數產生器 (TRNG) 從不可預測的物理過程中獲取隨機性,例如大氣雜訊(由 Random.org 使用)、放射性衰變或電子熱雜訊。 TRNG 具有不确定性,但运行速度较慢且成本较高。对于大多数应用来说,精心设计的 PRNG 与真正的随机性没有什么区别。

電腦產生的隨機數可以預測嗎?
如果攻擊者觀察到足夠的輸出來推斷內部狀態,則可以預測標準 PRNG。這就是為什麼 PRNG 絕對不能用於安全敏感的目的,例如加密金鑰、密碼產生或真錢賭博系統。加密安全 PRNG (CSPRNG) 的設計使得即使觀察許多輸出也無法預測未來或過去的值,這使得它們適合安全應用。

什麼是種子?為什麼它很重要?
種子是啟動 PRNG 序列的初始輸入值。相同的種子總是產生相同的數字序列,這對於可重複的模擬和調試很有用。改變種子會產生完全不同的序列。大多數應用程式自動從系統時鐘或熵源播種 PRNG,但手動設定固定種子的能力對於科學再現性非常有價值。

Random.org 如何產生真正的隨機性?
Random.org 使用大氣噪聲(世界各地雷擊產生的無線電噪聲,由無線電接收器捕獲)作為其熵源。由於大氣噪音基本上是不可預測的,因此所得的數字被認為是真正隨機的而不是偽隨機的。這使得 Random.org 適合真正的隨機性很重要的高風險繪圖、賭博和科學研究。

建議與須知

使用隨機數進行統計抽樣時,請務必確保樣本量足夠大以具有代表性 - 一個常見的準則是至少 30 個項目才能進行有意義的統計推斷。對於抽獎和競賽,請使用僅唯一號碼選項來防止重複獲獎者,並記錄您的方法以保持透明度和公平性。如果您正在運行需要可重現以供同行評審的模擬,請設定固定種子並將其與結果一起記錄。切勿將 Math.random() 或類似的 PRNG 用於安全應用程式 - 請務必使用 CSPRNG,例如 JavaScript 中的 crypto.getRandomValues() 或 Python 中的 Secret 模組。對於紙牌遊戲和洗牌,請使用 Fisher-Yates 演算法,該演算法可保證完全均勻的隨機排列,這與引入偏差的簡單洗牌實現不同。產生加密數字時,請使用盡可能寬的範圍(完整位元組值 0–255)並產生足夠的位元組來滿足演算法的要求 — AES-256 金鑰需要 32 位元組的加密隨機性。

Ad