wvogel日記

自分用の技術備忘録が多めです.

線形合同法

線形合同法による疑似乱数を作って遊んでたら面白いものができた。

linearRand :: Integral a => a -> a
linearRand x = (456*x+759) `mod` 24

何を渡しても 15 が返ってくる笑
定数w
値が1違うだけで全然違いますね

rand_list :: Integral a => [a]
rand_list = iterate linearRand' 1
    where
        linearRand' x = (457*x+759) `mod` 24

乱数周期は、[1,16,7,22,13,4,19,10]