我打算使用Mersenne扭曲我可以從這裏得到:https://cs.gmu.edu/~sean/research/,但我想知道如何使用它。我做了兩個玩具的例子。你認爲哪一個更好?你有明確的選擇理由嗎?如何在Java中使用Mersenne Twister?
我想要做的就是讓高品質的僞隨機數,並確保可重複性。
例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(不同類共享一個梅森旋轉算法實例)
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;
}
}
共享爲您提供了可能的線程安全問題。小心。 –
根據網頁的指示,類,梅森旋轉算法是線程安全的,但我在哪裏MT類共享可能不重複害怕多線程程序 – Nickel
這是因爲mt.randInt(10)將不會以相同的順序被稱爲每次。 – Nickel