#include <iostream>
#include <algorithm>
#include <stdlib.h>
void Dump (int *deck, int deckSize);
void FisherYatesShuffle (int *deck, int deckSize);
int main()
{
/* For this example, it doesn't matter how the rng is seeded. */
srand (1);
int deck[52] = {0,};
for (int x = 0; x < 52; x++)
{
deck[x] = x;
}
FisherYatesShuffle (deck, 52);
Dump (deck, 52);
return 0;
}
void Dump (int *deck, int deckSize)
{
const char *suit[] = {"clubs", "hearts", "spades", "diamonds"};
const char *face[] = {"ace", "deuce", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "jack", "queen", "king"};
for (int x = 0; x < deckSize; x++)
{
std::cout << face[deck[x]%13] << " of " << suit[deck[x]%4] << std::endl;
}
}
void FisherYatesShuffle (int *deck, int deckSize)
{
for (int i = deckSize - 1; i > 0; i--)
{
std::swap (deck[i], deck[rand()%(i + 1)]);
}
}