線形合同法(乗算型)による乱数発生法
javaを使って乱数を発生するプログラムを作っています。
線形合同法(乗算型)に基づいて発生させようと思うのですが、疑問点があり質問しました。
乱数発生の漸化式
X(i+1)= a*X(i) (mod M)
で、a,M,そして乱数の初期値を決めたいのですが、ネットを使って調べたところ、
a=16807
M=2147483647
が良いという記述がありました。
しかし、これをプログラムに反映させるとintの範囲から出てしまうため、検出値にマイナスが入ってしまいます。
また乱数の初期値に関する記述が見つからなかったので、どのような値にすべきか悩んでいます。
また、検出値をある範囲に(例えば100000まで)にしたい場合は、M=100000にすればいいと思うのですが、その場合のaや初期値の値はどのように決定したらよいのでしょうか?
教えて下さい。よろしくお願いします。
お礼
ありがとうございました。