每次调用函数时,随机数都相同



每次运行程序时,这些数字都是随机的,但在同一次运行中它们保持不变。我希望每次调用函数时数字都是随机的。 我确实在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

最新更新