• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:線形合同法(乗算型)による乱数発生法)

線形合同法(乗算型)による乱数発生法

このQ&Aのポイント
  • javaを使って乱数を発生するプログラムを作成するには、線形合同法(乗算型)を使用します。
  • 線形合同法の漸化式はX(i+1)= a*X(i) (mod M)となります。
  • しかし、乱数の初期値や範囲の決定には注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> 「乗算の結果あふれた部分」というのは、「マイナスになってしまう検出値」という解釈でいいのでしょうか? たとえば8ビットに単純化して話をすると 0xff × 0xff とかすると 0xfffe がその積になりますが、ここで 上位の0xff は無視するという意味です。 有符号の32bit整数であるなら、0x7fff_ffffを越えたところでは 最上位ビットは無視するということでいいのではないでしょうか。 これはまあ「マイナスになってしまった値」ですけどね。

p-aimar
質問者

お礼

2度も回答していただいてどうもありがとうございます。 8ビットの知識は全く無いのですが、なんとなく理解できました。 ありがとうございます

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

回答がつかないようなので。 数値は無符号で扱い、乗算の結果あふれた部分は無視するという 手順でやるのではなかったでしたっけ? Mを適当に決めてしなうと周期等で問題が生じることが懸念されるので、 別の方法で範囲内に収めるようにしたほうがよいと思います。

p-aimar
質問者

お礼

回答ありがとうございます。 範囲内で収める方法、調べてみます。 「乗算の結果あふれた部分」というのは、「マイナスになってしまう検出値」という解釈でいいのでしょうか? 理解力が無くてすいません・・・