我正在研究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()
。我认为我根据互联网上的意见正确编写了函数,但我不知道如何克服这个问题。我会感谢你的帮助。