MATLAB rng(seed,'twister')函数的等效C ++实现

时间:2018-08-24 12:05:59

标签: c++ matlab random

我正在尝试提出等效的方法来在MATLAB和C ++中生成统一的随机变量。在MATLAB中,很容易使用生成器rng(0, 'twister')来使用种子0和Marsenne Twister引擎。然后,例如,可以使用rand(5,1)生成5个统一的随机数。根据MATLAB的rand文档,它使用mt19937引擎。

我正在努力用C ++复制它。我使用了以下代码:

#include <iostream>
#include <cmath>
#include <random>

static std::random_device rd;
static std::tr1::mt19937 rand_mt(rd());

int main(void)
{
    rand_mt.seed(0);
    for (int i = 0;i < 5;i++)
    {
        std::cout << (double)rand_mt() / ((double)rand_mt.max() - 
        (double)rand_mt.min()) << std::endl;
    }
    return 0;
}

这是一个很长的路,但是我没有从MATLAB和C ++获得相同的输出。我需要解决上述代码的任何问题?还是在C ++中有替代的等效实现?

0 个答案:

没有答案