LCG(linear congruential generator): 一種簡單的隨機數生成算法


LCG算法

LCG(linear congruential generator)線性同余算法,是一個古老的產生隨機數的算法。由以下參數組成:

參數 m a c X
性質 模數 乘數 加數 隨機數
作用 取模 移位 偏移 作為結果

LCG算法是如下的一個遞推公式,每下一個隨機數是當前隨機數向左移動 log2 a 位,加上一個 c,最后對 m 取余,使隨機數限制在 0 ~ m-1 內

從該式可以看出,該算法由於構成簡單,具有以下優點:

  • 計算速度快
  • 易於實現
  • 易於寫入硬件

以下是針對不同參數 lcg 產生隨機數的效果圖

可以看出,針對不同的參數,lcg產生的效果差別很大

以下是針對不同環境下的參數選擇

詳見wiki

python 實現

def lcg(modulus, a, c, seed):
    while True:
        seed = (a * seed + c) % modulus
        yield seed


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM