Porównuję Twister Mersenne w Javie i Matlabie. Używam tego samego materiału siewnego w obu. Moim problemem jest to, że kiedy wydrukuję dziesięć liczb z każdego generatora liczb (Mersenne Twister działający odpowiednio w Javie i Matlab), wynikowe wyjście nie wydaje się pasować. Dane wyjściowe z wersji Matlab wypisują co drugi numer z programu w Javie.Porównanie Mersenne Twister w Javie i matlab
drukuje Java:
0,417, 0,997, 0,720, 0,932, 0,0001 ..
Matlab drukuje:
0,417, 0,720, 0,0001 ..
Czy ktoś może wskazać mi właściwy kierunek, aby dowiedzieć się, dlaczego tak się dzieje? 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:
s = RandStream('twister','Seed',1)
RandStream.setGlobalStream(s);
r = 1 .* rand(1,10);
używam standardowego wdrożenia Mersenne Twister w Matlab, Java wersja używam można znaleźć here
gdzie otrzymałeś implementację java? –
Istnieją 32-bitowe i 64-bitowe warianty Mersenne Twister, które produkują różne sekwencje - być może Java używa jednego, a Matlab drugiego? – DNA
Przepraszamy, wydawało mi się, że przeoczę tę informację w pierwszym poście. Został zaktualizowany. Wersja Java pochodzi z [here] (http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java) – user2072220