dポイントプレゼントキャンペーン実施中!

rand = (a * x + b) % mod;
であるとき、
32bitの最大周期になる線形合同法の初期値は、

a = 0x41c64e6d;
b = 0x6073;

らしいですが、64bitの場合 a と b がどのようになるのかを教えて下さいませ。
おそらく、64bit以内の最大素数と、その原始根なんだろうと思います。
(よく分かりませんけど)。

ただ私は数学はけっこうどうでも良くて、具体的な数値だけがほしいです。

A 回答 (2件)

線形合同法で32bitの最大周期、となると、2^32であり、そうなるa,bの組合せは沢山あります。



他の条件が無ければ
a = 0x41c64e6d;
b = 0x6073;
は、「沢山の存在する(a,b)のうちの一つ」でしかありません。

このa,bをmod=2**64 として使ったら、 2**64周期の疑似乱数になるはずです。

a=5,b=1も「沢山の存在する(a,b)のうちの一つ」です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうなのですか。
私が間違ってたのですね。質問のしかたも。

めんどうなのであまり細かいことは気にしないようにします。

お礼日時:2015/12/15 13:06

「具体的な数値だけがほしい」ということで


a = 5, b = 1.
    • good
    • 0
この回答へのお礼

ありがとうございます。
ただそれは違うと思うのです。

5 / 2**64
の理由などにより。

お礼日時:2015/12/14 17:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!