I'm writing a program which generates every number from 0 to 53 in a random order without repeats (shuffling and dealing a full card deck). Every time I run the program, however, it always generates 0 as the first number. Here's my code:
Code:
void DealCards()
{
int RandNum;
bool Dealt[54];
int i;
PlayerTypes ePlayer = (PlayerTypes)((Dealer + 1) % 4);
GamePlayers* pPlayer;
for (i = 0; i < 54; i++)
{
Dealt[i] = false;
}
for (i = 0; i < 54; i++)
{
RandNum = ((float)rand()/(RAND_MAX + 1)) * 54;
pPlayer = GetPlayer(ePlayer);
if (Dealt[RandNum])
{
i--;
}
else
{
for (int j = 0; j < 14; j++)
{
if (pPlayer->Hand[j] == -1)
{
pPlayer->Hand[j] = (CardTypes)RandNum;
break;
}
}
Dealt[RandNum] = true;
ePlayer = (PlayerTypes)((ePlayer + 1) % 4);
}
}
}
Any idea what's going on?