掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
モンテカルロ法をMPI並列化させた時に乱数がの一様性を保証するには? (ID:28992)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
使用メモリを減らす為にビットで使用済みを判定するようにしてみました 1024x1024(1M) 確保で 最大数 8388608 の乱数を確保できます var H1 : array[0..1023*1023-1] of Byte; begin //データ初期化 for I:=0 to High(H1)-1 do begin H1[I] := 0; end; //乱数発生 for I:=0 to (High(H1) *8) - 1 do begin R1 := Random(High(H1)*8); R2 := R1 div 8; R3 := 1 shl (R1 mod 8); while (H1[R2] and R3) = R3 do //既に乱数が発生していれば再度乱数発生 begin R1 := Random(High(H1)*8); R2 := R1 div 8; R3 := 1 shl (R1 mod 8); end; H1[R2] := H1[R2] or R3; case I mod 7 of 0:// 1台目に送信 1:// 2台目に送信 2:// 3台目に送信 3:// 4台目に送信 4:// 5台目に送信 5:// 6台目に送信 6:// 7台目に送信 end; end; 乱数発生は1台にして乱数の数値を各プロセッサーに送信して計算だけさせるといのはどうですか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.