每次我运行程序时,这些数字都是随机的,但是在相同的运行期间,它们保持不变。我希望每次调用函数时数字都是随机的。 我确实将生成器植入了main()。
std::random_device device;
std::mt19937 generator(device());
我的功能
void takeAssignment(std::vector<Student> &students,
const int min, const int max,
std::mt19937 e)
{
std::uniform_int_distribution<int> dist(min, max);
// all students take the assignment
for (auto &s : students)
{
// random performance
int score{dist(e)};
s.addScore(score, max);
std::cout << s.getName() << "'s score: " << score << std::endl;
}
}
例如,每次调用函数时,最小值为0,最大值为10, 打印的功能的输出
Abril Soto's score: 1
Bailey Case's score: 9
在运行期间。
将dist放入循环中也不起作用,数字保持不变。
答案 0 :(得分:7)
您通过值调用传递生成器,从而创建一个没有种子的副本并生成相同的值。尝试按引用传递函数参数:like
flash()