uniform_real_distribution和uniform_int_distribution使用g ++生成相同的数字

时间:2017-12-11 18:14:15

标签: c++ random

我正在研究C ++中的随机算法,其中我需要生成实数和整数的随机数。我写了两个函数:

double random_real_number() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_real_distribution<> dis(0.0, 1.0);
    double number = dis(gen);
    cout << number << endl;
    return number;
}

int random_integer_number() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dis(0, INT_MAX);
    int number = dis(gen);
    cout << number << endl;
    return number;
}

这些函数在循环中被其他函数多次调用。当我使用Visual Studio 2013编译并运行该程序时,一切正常,但是当我使用g ++(在Windows上)编译并运行程序时,random_real_number()始终生成0.726249和{{1}总是产生random_integer_number()。我认为我根据互联网上的意见正确编写了函数,但我不知道如何克服这个问题。我会感谢你的帮助。

0 个答案:

没有答案