I'm using the random_shuffle
on a vector like this:
#include <algorithm>
vector <Card> deck;
//some code to add cards to the deck here
random_shuffle ( deck.begin(), deck.end() );
When run, the content of the deck is mixed up, but this mixed-up order is kept when I restart the program.
Did I miss something? How can I make it truly random?
You need to seed the psuedo-random number generator first using srand.
#include <algorithm>
#include <cstdlib>
...
std::srand(std::time(0));
vector <Card> deck;
//some code to add cards to the deck here
random_shuffle ( deck.begin(), deck.end() );
Note from link above:
Generally speaking, the pseudo-random number generator should only be seeded once, before any calls to rand(), and the start of the program. It should not be repeatedly seeded, or reseeded every time you wish to generate a new batch of pseudo-random numbers.