Java와 matlab의 mersenne 트위스터를 비교하고 있습니다. 둘 다 같은 씨앗을 사용하고 있습니다. 제 문제는 각 숫자 생성기 (Java 및 Matlab에서 각각 실행중인 Mersenne Twister)에서 10 개의 숫자를 인쇄 할 때 출력 결과가 일치하지 않는 것입니다. Matlab 버전의 출력 데이터는 Java의 프로그램에서 매초마다 인쇄됩니다.Java와 matlab의 Mersenne Twister 비교
자바 인쇄 :
0.417, 0.997, 0.720, 0.932, 0.0001 ..
matlab에 인쇄 :
0.417, 0.720, 0.0001 ..
누구나 올바른 방향으로 나를 가리켜 주셔서 왜이게 뭐야?
는 자바 :
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);
, 내가 사용하고있는 자바 버전을 찾을 수 있습니다 here
자바 구현을 어디서 얻었습니까? –
다른 시퀀스를 생성하는 Mersenne Twister의 32 비트 및 64 비트 변형이 있습니다. Java는 하나를 사용하고 Matlab은 다른 것일 수 있습니다. – DNA
죄송합니다. 초기 게시물에서 그 정보를 간과 한 것 같았습니다. 이제 업데이트되었습니다. Java 버전은 [여기] (http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java)입니다. – user2072220