87 :
名無しさん@3周年:
81 :名無しさん@3周年 :03/10/13 16:33。
43 :MPI姫初め :02/07/06 04:02
モンテカルロ法での乱数シードの選択は、けっこう複雑な問題です。皆、統計上の
話ばかりするけれど、モンテカルロ法とは乱数のことではない。使う分野によって、
歴史があって微妙に乱数のアルゴリズムは同じでもシード等は微妙に違う。別のシ
ード等が統計的に良いとわかっていても、膨大な参照解が蓄積されているので簡単
には変えられない事情もある。
目的にもよるけれど、システム備え付けの乱数ルーティンを使うのは感心しない。
モンテカルロ法では、乱数ルーティンは自分でソースレベルで用意しておくほうが
よい。その意味では、単純な合同法 I(k+1)=mod(λ*I(k),P)r(k+1)=I(k+1)/P が
よい。MT法も悪くはないのだけど、自分でコントロールするには大きすぎる。
やるなら、ソースレベルで全部理解しておくのが望ましい。
これは、勿論、製品レベルでの提供の場合である。単なる、プロト程度ならばここ
まで拘らなくてもよい。ただ、ここまでやらないとシミュレーションに対する乱数
の問題を議論することはできない。
合同法ならば、I(k+m)=mod(λ**m*I(k),P)でmステップ先に跳ばすことができる。
>(必要な乱数の数)×(ノード数)個発生させて、ノードごとに違うところを
>切り出して使うのが一番簡単です。
ということです。ここで、I(k+1)=mod(λ*I(k),P)等の整数演算は64ビット
または、48ビット整数演算する必要があります。
合同法は、馬鹿にされているところもありますが、そういう人たちは、殆んどが
32ビット整数演算しているようです。