gpt4 book ai didi

c++ - 每次调用函数时随机数都是相同的

转载 作者:行者123 更新时间:2023-12-01 19:49:52 25 4
gpt4 key购买 nike

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

关于c++ - 每次调用函数时随机数都是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59577450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com