vendredi 3 janvier 2020

Random numbers are the same every time function is called

The numbers are random every time I run the program, but they stay the same during that same run. I want the numbers to be random every time the function is called. I did seed the generator in main().

    std::random_device device;
    std::mt19937 generator(device());

My function

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;
    }
}

For example, everytime the function was called with the min as 0 and max as 10, the output of the function printed

Abril Soto's score: 1
Bailey Case's score: 9

during that run.

Putting dist inside the loop didn't work either, the numbers stayed the same.

Aucun commentaire:

Enregistrer un commentaire