想過電腦中亂數產生器如何設計的嗎?
大多數亂數產生器採用線性同餘法設計 (Linear Congruential Generator, LCG),因為方法簡單以及亂數均勻分佈 (Uniform distribution)。
其原理為, Xn = a Xn-1 + b 將一正整數乘以 a 常數再加上 b 常數, 0<= Xn<M 除 M 取餘數,這個 Xn 可重複代入上式計算下一個亂數。
各位可以參考 EXCEL 檔,我選用 a = 49,b = 0,M = 215 = 32768,C 欄位就是亂數,介於零與一之間,從 E、F 欄位可以看出數值分部非常均勻。
另外,從 A 欄位會發現,每 2048 筆資料會重複循環,這裡所舉的例子是方便讀者明瞭原理,商用軟體至少用32 bits,並挑選合適的 a b 值,所以很難發現重複性。








