我正在比较Java和matlab中的mersenne twister.我在两者中使用相同的种子.我的问题是,当我从每个数字生成器打印出10个数字(分别用Java和Matlab运行的Mersenne Twister)时,结果输出似乎不匹配.来自Matlab版本的输出数据打印出Java中程序的每秒数.
Java打印:
0.417,0.997,0.720,0.932,0.0001 ..
Matlab打印:
0.417,0.720,0.0001 ..
任何人都可以指出我正确的方向来弄清楚为什么会发生这种情况?
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");
}
}
Run Code Online (Sandbox Code Playgroud)
Matlab的:
s = RandStream('twister','Seed',1)
RandStream.setGlobalStream(s);
r = 1 .* rand(1,10);
Run Code Online (Sandbox Code Playgroud)
我在MatLab中使用Mersenne Twister的标准实现,我正在使用的Java版本可以在这里找到