我正在比較Java和matlab中的mersenne twister。我在兩個中都使用相同的種子。 我的問題是,當我從每個數字發生器(Mersenne Twister分別運行在Java和Matlab中)打印出十個數字時,結果輸出似乎不匹配。 Matlab版本的輸出數據從Java程序中打印出每個第二個數字。在Java和matlab中比較Mersenne Twister
的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的:
s = RandStream('twister','Seed',1)
RandStream.setGlobalStream(s);
r = 1 .* rand(1,10);
我使用的標準執行梅森難題在MATLAB語言中,我使用了Java的版本可以發現here
你從哪裏得到java實現? – 2013-02-14 14:29:35
Mersenne Twister有32位和64位的變體,它們產生不同的序列 - 也許Java使用另一種,Matlab使用另一種? – DNA 2013-02-14 14:29:58
對不起,我似乎忽略了最初發布的那條信息。它現在已經更新。 Java版本來自[這裏](http://www.cs.gmu.edu/~sean/research/mersenne/MersenneTwister.java) – user2072220 2013-02-14 14:30:41