我在比较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..
请问有谁能指导我如何找出原因呢?
Java:
我正在使用MatLab中的Mersenne Twister标准实现,我使用的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");
}
}
Matlab:
s = RandStream('twister','Seed',1)
RandStream.setGlobalStream(s);
r = 1 .* rand(1,10);
我正在使用MatLab中的Mersenne Twister标准实现,我使用的Java版本可以在这里找到:这里。