線形合同法(Linear congruential method)のスペクトル検定による可視化
ここでのA(乗数) C(増分) M(法)は定数で、AとCはMより小さい数を選ぶ。
このA C Mの選び方によって周期性は変わる。
どういう選び方すればをいいかは下記本を参照ください。
線形合同法で生成された数列がどれくらい乱雑かを判定する方法の一つにスペクトル検定がある。
今回は三次元でこれをグラフにしてみた。
Rubyのrandはメルセンヌ・ツイスタなので、それと線形合同法で生成した乱数の分布を比べてみる。
適当なスクリプトを書いて可視化した結果が下記の図となる。
可視化にはGR.rbを利用している。
- メルセンヌ・ツイスタ
- 線形合同法(A(乗数)を137、C(増分)を187、M(法)を256にしているので規則性がわざと出やすくしている)
こう見ても今回のパラメータの線形合同法の結果は乱雑さがない感じがする。
参考資料
http://www.math.sci.hiroshima-u.ac.jp/m-mat/TEACH/ichimura-sho-koen.pdf