Javaでメルセンヌ・ツイスタを使う

ライブラリを入手

今回はこちらのsfmtライブラリを使う。

http://www001.upp.so-net.ne.jp/isaku/rand2.html

「sfmt.zip : ライブラリ一式」からダウンロード。

インストール

zipを解凍したら「SfmtJAVA」を開く。
数字のフォルダがたくさん並んでいるが周期が違うのみで中身はほとんど変わりなし。

適当なフォルダを選んでその中にある「Sfmt.java」をプロジェクトにインポートすればOK。

Readme.txtに詳しい使い方が載っている。

使い方

Sfmt rnd = new Sfmt([整数値、または整数値の配列]);

のようにSfmtオブジェクトを作成して使用準備完了。
整数値はシード値。
以下のようにcurrenttimeとかにしてやると毎回生成時にシードが変わって幸せ。

int[] init_key = {(int) System.currentTimeMillis(), (int) Runtime.getRuntime().freeMemory()};
Sfmt rnd = new Sfmt(init_key);

乱数の生成は以下のようにすれば良い。

rnd.NextInt(10); // 0~9 の整数
rnd.NextUnif(); // 0以上1未満の実数