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

时间:2020-01-03 11:04:07

标签: c++ c++11 random

每次我运行程序时,这些数字都是随机的,但是在相同的运行期间,它们保持不变。我希望每次调用函数时数字都是随机的。 我确实将生成器植入了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放入循环中也不起作用,数字保持不变。

1 个答案:

答案 0 :(得分:7)

您通过值调用传递生成器,从而创建一个没有种子的副本并生成相同的值。尝试按引用传递函数参数:like

flash()