vendredi 21 mai 2021

Class constructor "eating" up values

So I'm trying to run this sim program for a class that makes us build a Bet class using sets.

Here's the class definition:

class Bet2{
private:
    set<int> mainNumbers;
    set<int> luckyNumbers;
public:
    Bet2();
    void show() const;
    set<int> getMainNumbers();
    set<int> getLuckyNumbers();
};

So I decided to use the random lib, since the rand() function that they gave us in class spat out the same values when creating a bunch of Bet2 objects at once, for the sim. However, for some reason, it's not spitting out the ammount of values it's supposed to. Sometimes it spits out 4 main numbers (instead of 5), or just 1 lucky number (instead of 2)

Here's the code for the constructor:

Bet2::Bet2() {
    random_device rd;
    uniform_int_distribution<int> main(1, 50);
    for (int i = 0; i < 5; i++)
        mainNumbers.insert(main(rd));
    uniform_int_distribution<int> star(1, 12);
    for (int i = 0; i < 2; i++)
        luckyNumbers.insert(star(rd));
}

I ran a few tests using the uniform_int_distribution and the random_device, in the main fucntion, and it ran without any problem. For some reason it eats up values when i initialize a Bet2 vector for my sim:

Main Numbers: 11 23 27 32 36
Star Numbers: 3 11
Main Numbers: 4 18 22 27 28
Star Numbers: 9 11
Main Numbers: 3 5 25 43      <-
Star Numbers: 1              <-
Main Numbers: 40 42 43 46 50
Star Numbers: 2 7
Main Numbers: 7 10 14 27 45
Star Numbers: 9 10
Main Numbers: 11 15 21 24 35
Star Numbers: 1 11
Main Numbers: 3 25 29 45 50
Star Numbers: 3 7
Main Numbers: 11 15 23 25 37
Star Numbers: 1 6
Main Numbers: 7 8 26 31 43
Star Numbers: 6 9
Main Numbers: 15 27 36 38 39
Star Numbers: 2 8

Tried to figure out of uniform_int_distribution can not generate a value, but didnt't find anything online.

Thanks in advance!




Aucun commentaire:

Enregistrer un commentaire