Comportamento estranho srand dentro para loop; c ++
Apenas escrever um programa para embaralhar um baralho de cartas e ter um comportamento diferente, dependendo se o RNG foi propagado dentro ou fora do loop for; ie.
for(int i = 0; i < 52; i++)
{
srand(time(0));
Card temp = deck[i];
int toSwap = rand()%52;
deck[i] = deck[toSwap];
deck[toSwap] = temp;
}
dá a saída
Nine of Hearts
Ace of Clubs
Two of Clubs
Three of Clubs
Four of Clubs
etc, mas
void DeckOfCards::shuffle()
{
srand(time(0));
for(int i = 0; i < 52; i++)
{
Card temp = deck[i];
int toSwap = rand()%52;
deck[i] = deck[toSwap];
deck[toSwap] = temp;
}
currentCard =0;
}
leva a
Ace of Hearts
Queen of Spades
Four of Hearts
Seven of Clubs
Five of Hearts
(a funcionalidade correta). Alguém sabe por que a propagação do RNG causaria isso?