私はJavaとmatlabのメルセンヌツイスタを比較しています。私は両方で同じ種を使用しています。 私の問題は、各番号ジェネレータ(JavaとMatlabで動作するMersenne Twister)から10個の数字を出力すると、出力結果が一致しないように見えることです。 Matlab版の出力データは、Javaのプログラムから毎秒2つの数値を出力します。Javaとmatlabのメルセンヌツイスターの比較
のJavaプリント:
0.417、0.997、0.720、0.932、0.0001 ...
Matlabの版画:
0.417、0.720、0.0001 ...
誰かが正しい方向に私を指摘して、なぜこのことが分かりますかppens?
は、Java:
public class TestRand {
static MersenneTwister r = new MersenneTwister(1);
public static void main(String[] args) {
int ant = 10;
float[] randt = new float[ant];
for (int i = 0; i < ant; i++){
randt[i] = r.nextFloat()*1;
System.out.println(randt[i]);
}
System.out.println("------------twist");
}
}
Matlabの:私はMATLABでメルセンヌツイスターの標準実装を使用しています
s = RandStream('twister','Seed',1)
RandStream.setGlobalStream(s);
r = 1 .* rand(1,10);
、私が使用しているJavaのバージョンを見つけることができますhere
ここでJavaの実装を取得しましたか? –
異なるシーケンスを生成するMersenne Twisterには、32ビットと64ビットのバリエーションがあります - Javaでは1つを使用し、もう1つはMatlabを使用するでしょうか? – DNA
申し訳ありませんが、最初の投稿でその情報を見逃してしまったようです。今更新されました。 Javaのバージョンは[here](http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java)から入手しました – user2072220