ここで紹介するのは、TinyMTをJavaに移植したものです。TinyMT32クラス、 TinyMT64クラス、ThreadLocalRandomクラスが提供されています。
注意:どのクラスもスレッドセーフではありません。 java.util.Randomクラスは スレッドセーフなので、TinyMTの三つのクラスは java.util.Randomクラスを 継承していません。 代わりに、org.apache.commons.math.random.RandomGenerator インターフェイスを実装しています。
TinyMT32とTInyMT64用にそれぞれ65536個のパラメータがリソースファイルに 定義されています。 ThreadLocalRandom の実体はTinyMT32ですが、パラメータは上記65536個 とは別のものを使用しています。
jump メソッドが提供されています。
このプログラムをコンパイルおよび実行するには、以下の環境が必要です。
import jp.ac.hiroshima_u.sci.math.saito.tinymt.TinyMT32; public class Test { public static void main(String[] args) { TinyMT32 tiny = TinyMT32.getDefault(args[0]); for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { System.out.print(String.format("%08x ", tiny.nextInt())); } System.out.println(); } } }