- データ構造,アルゴリズム,デザインパターン総合スレ 2
814 :デフォルトの名無しさん[sage]:2015/12/14(月) 23:31:43.15 ID:R0gDPv6y - 簡単な乱数生成のアルゴリズムで、線形合同法と言うのがあります。
数学のループ記述はよく分からないので、プログラム風に書くとこうです。 x = (a * x + b) % mod; xが上書きされて何度も順番に使用さていると言う意味です。 % mod は割った余りです。 32bit環境なら mod = 2 ** 32; となっています。(つまり上記の式は32bitで表現できる最大値未満の乱数がxとして算出され、次の乱数生成にまた使用されます)。 64bit環境なら mod = 2 * 64; となっています。 x の初期値は何が入っていても構いません。(例えば式の初回使用時などに適当な値を入れます。例えば今の時間とか)。 a と b は定数で、これを何に設定するかによって乱数が良質であるか悪質であるか、また使える周期の長さが変わります。 周期が長くて良質な物を出すとき、これに何を設定すると良いのか分からないので教えてください。 32bit用と64bit用の両方をお願いします。 ちなみに、それを考えるのがどの程度大変 (または簡単) なことか分からんで質問してます。
|