Dziwne zachowanie srand wewnątrz pętli; c ++
Wystarczy napisać program, aby przetasować talię kart i uzyskać inne zachowanie w zależności od tego, czy RNG zostało zaszczepione wewnątrz lub na zewnątrz pętli for; to znaczy.
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;
}
daje wyjście
Nine of Hearts
Ace of Clubs
Two of Clubs
Three of Clubs
Four of Clubs
etc, ale
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;
}
prowadzi do
Ace of Hearts
Queen of Spades
Four of Hearts
Seven of Clubs
Five of Hearts
(poprawna funkcjonalność). Ktoś wie, dlaczego ponowne umieszczenie RNG mogłoby to spowodować?