我正在比较 Java 和 matlab 中的 mersenne twister。我在两者中都使用相同的种子。我的问题是,当我从每个数字生成器(分别在 Java 和 Matlab 中运行的 Mersenne Twister)打印出十个数字时,结果输出似乎不匹配。Matlab 版本的输出数据每隔一秒从 Java 程序中打印出一个数字。
Java 打印:
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);
我在 MatLab 中使用 Mersenne Twister 的标准实现,我使用的 Java 版本可以在这里找到