擬似乱数列



モンテカルロシミュレーションのプログラムを走り書きしていると、つい、乱数発生のところで、Math.random()を使ってしまう。seedを与えて、再現性を持たせるために必要なことは、擬似乱数列generatorを入れることと、そのgeneratorにseedを引数として与えることと、すべての乱数発生箇所をこのgeneratorにつなぐことである。Javaで、MersenneTwisterで、Eclipseを使って、すでにMath.random()で書いてしまったソースを書き換える方法は(こちら)

PCクラスタ上のRにて共通の擬似乱数列generatorを使う件(SPRNG)に関しての記事はこちら。ただし、使用にまだ成功していない。

それを踏襲して集団遺伝学的な自作アプリケーションに同一のseedを与え、発生した乱数列を記録したのが、以下の2ファイル


seed 12345
MZ check ここでのrand 0.5832970737461056
MZ check ここでのrand 0.29862143198129
MZ check ここでのrand 0.11593699631612786
**************************************************
******
***
***
****
**
****
***
***
**
**
**
*
*

MZ check ここでのrand 0.32310982420576717
MZ check ここでのrand 0.9242614300621409


seed 12345
MZ check ここでのrand 0.5832970737461056
MZ check ここでのrand 0.29862143198129
MZ check ここでのrand 0.11593699631612786
**************************************************
******
***
***
****
**
****
***
***
**
**
**
*
*

MZ check ここでのrand 0.32310982420576717
MZ check ここでのrand 0.9242614300621409