我最近在使用 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;
非常感谢任何帮助。
最佳答案
random
是一个整数对象。整数对象的值不会改变,除非您设置它的值。您在这里所做的类似于掷骰子,记下随机结果,然后反复阅读您所写的内容,期望写入的结果会发生变化。
您可以通过在分布函数上多次应用生成器对象来生成多个随机数:
while (...)
cout << dis(gen) << endl;
关于c++ - 使用 Mersenne-Twister 生成多个随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552933/