【发布时间】:2020-01-03 11:04:07
【问题描述】:
每次我运行程序时,这些数字都是随机的,但在同一次运行中它们保持不变。我希望每次调用函数时数字都是随机的。 我确实在 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)更改为std::mt19937 & e)它正在获取生成器的副本,而不是更新作为参数传入的生成器。 -
是的,谢谢!我想过这个问题,但认为它不会解决它。