カードのデッキをシャッフルするプログラムを作成するだけで、RNGがforループの内側にシードされているか外側にシードされているかによって動作が異なります。すなわち。
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;
}
出力を与えます
Nine of Hearts
Ace of Clubs
Two of Clubs
Three of Clubs
Four of Clubs
など、しかし
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;
}
につながる
Ace of Hearts
Queen of Spades
Four of Hearts
Seven of Clubs
Five of Hearts
(正しい機能)。RNGを再シードするとなぜこれが発生するのか誰もが知っていますか?