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

seameteo 3,007views 更新:2014年9月5日

ライブラリを入手

今回はこちらの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未満の実数

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません