【发布时间】:2018-01-31 23:08:05
【问题描述】:
我最近在使用Mersenne-Twister 算法在 C++ 中生成随机数时遇到了一个问题。当迭代for循环并使用cout输出生成的数字时,它会重复输出相同的数字。例如,它输出类似11 11 11 而不是11 43 124。我将如何用代码实现这一点?我当前的代码发布在下面。
#include <iostream>
#include <random>
#include <Windows.h>
#include <unistd.h>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> dis(15000, 120000);
int random = dis(gen);
int i = 1;
while (i = 1) {
cout << random << endl;
}
return 0;
非常感谢任何帮助。
【问题讨论】:
-
您需要在循环中调用
dis(gen)。正如所写,您的价值random在分配后永远不会改变 -
random在您重新分配之前不会更改 -
您不会在循环中获得新的随机数,您只是一遍又一遍地打印相同的随机数。在您的 while 循环中再次调用
random = dis(gen)。
标签: c++