私はここから得ることができるメルセンヌツイスターを使用する予定です:https://cs.gmu.edu/~sean/research/、しかし私はそれを使用する方法が不思議です。私は二つのおもちゃの例を作ったあなたはどちらが良いと思いますか?あなたの選択には明確な理由はありますか?Mersenne TwisterをJavaでどのように使用できますか?
私がしたいことは、高品質の疑似乱数を作り、再現性を確認することです。
例1は
class Foo {
public static void main(String[] args) {
MersenneTwister mt = new MersenneTwister(1);
Bar b = new Bar();
}
}
class Bar {
MersenneTwister mt;
Bar() {
this.mt = new MersenneTwister(2);
}
}
例2の(異なるクラスが1つのメルセンヌ・ツイスタのインスタンスを共有する)
class Foo {
public static void main(String[] args) {
MersenneTwister mt = new MersenneTwister(1);
Bar b = new Bar(mt);
}
}
class Bar {
MersenneTwister mt;
Bar(MersenneTwister mt) {
this.mt = mt;
}
}
共有するとスレッドセーフの問題が発生します。注意してください。 –
ウェブページの指示によると、クラスMersenneTwisterはスレッドセーフですが、MTクラスが共有されているマルチスレッドプログラムは反復可能ではないかもしれません – Nickel
これは、mt.randInt(10)が同じ順序で呼び出されないためです毎回。 – Nickel