每次运行程序时,这些数字都是随机的,但在同一次运行中它们保持不变。我希望每次调用函数时数字都是随机的。 我确实在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放入循环中也不起作用,数字保持不变。
你通过按值调用传递生成器,从而创建一个没有种子的副本并生成相同的值。尝试在函数参数中通过引用传递:喜欢
std::mt19937& e