De code maakt gebruik van een array kaarten van het type 'card' waarmee de eigenschappen van een kaart opgezocht kunnen worden. Vervolgens heb een 1 or meer lijsten om het geschudde deck of handen in op te slaan. Deze lijsten bevatten een nummer van 0 tot en met 51 welke gebruikt kan worden als array index.
Ik twijfel aan de willekeurigheid omdat de eerste kaart (Cardlist[0]) als eerste de kans krijgt of de waarde 0 van de RNG mee te krijgen waardoor deze een hogere kans zou hebben om de eerste plek of de lijst the krijgen. (Overige kaarten krijgen een nieuw nummber als het eerste al gebruikt is) Is deze twijfel terecht?
Code: Selecteer alles
class Card{
// snip
};
class Deck{
Card CardList[52];
void Shuffle();
// snip
};
void Deck::Shuffle(){
map<int, int> m; // Create map to hold card numbers.
// Numbers will be sorted based on the random value assigned to them.
int r = 0;
srand(time(NULL));
while(m.size() < 52){ // Create new entry while not all 52 cards have a random value
r = rand();
m.insert (pair<int, int>(r, m.size())); // Store Card number (0 - 51). This just happens to be the size of the map before the number is added
}
// verplaats de inhoud van map m naar een deck.
// snip
}