小编use*_*220的帖子

比较Java和Matlab中的Mersenne Twister

我正在比较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版本可以在这里找到

java random matlab mersenne-twister

5
推荐指数
1
解决办法
1556
查看次数

标签 统计

java ×1

matlab ×1

mersenne-twister ×1

random ×1