Mersenne Twister with improved initialization (2002)



English Version

News: SIMD-oriented Fast Mersenne Twister (SFMT) をリリースしました。 SFMTはオリジナルのMersenne Twisterより約二倍速く、 よりよい均等分布特性を持ち、零超過初期状態からの回復も高速です。 SFMTのページを見てください。 (2007/1/31)



1998年版MTの初期化ルーチンには、シードの最上位ビットが 状態ベクトルにあまり反映されないなどの(小さな)問題が ありました。

同種の問題 は、いとこであるTT800に対して Jeff Szuhay によりすでに報告されていましたが、 対応が遅れました。

ここに、この問題点を解決した2002年版標準コードmt19937ar (arはアレイ)を おきます。
gzipped tar-file: mt19937ar.tgz .
このtarファイルの中味は
使い方は、上記readme-mt.txtファイル(英語)を読んで下さい。
日本語による説明 readme-mt-jp.html

スピードを必要とされる方への注意: 5つの実数版のいずれも、整数版への関数呼び出しを行なっています。 このため、速度が前のバージョンより遅くなっています。コンパイラ の最適化レベルを最大にすると、関数呼び出しがinlineの展開に なり、速度の差があらわれないことが多いです。そうでない場合は、 手でgenrand_intを必要な関数の中にコピーして変換を行ない、 関数呼び出しに 替えて下さい。

Shawn Cokusの高速版を参考にした高速かも知れないバージョン (2002/Feb./11). (Pentium 4では却って遅いという Agner Fog の報告もあり。)
Cokus版を参考にし、さらにMatthew Bellewの簡素化、高速化を とりいれた
gzipped tar-file: mt19937ar-cok.tgz .
この.tarファイルの中身は以下の通りです。 Pablo M. Ronchi さんや他の方の提案によりmt19937ar.c ファイルを関数本体の入った.cファイルと 関数プロトタイプ宣言の入った.hファイル、そしてテスト用の メイン関数の入った.cファイルの三つに分割しました。 この結果より使いやすくなると思います。
gzipped tar-file of these files: mt19937ar.sep.tgz .
この.tarファイルの中身は以下の通りです。 乱数生成や初期化のアルゴリズムは変わっていません。 mt19937ar.c (2002 version)と同じです。

これらのバージョンは、BSDライセンスに準拠しており、 改変、商用利用にも自由にお使いできます。

MTのページへ戻る