只需編寫一個程序來洗牌一副撲克牌,並獲得取決於RNG是否內部或外部的for循環播種不同的行爲; 即。for循環內奇怪的srand行爲; C++
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會導致這種情況?只需要,如果你需要的僞隨機量一旦
如果是隨機得到的時候,你怎麼知道的第一個輸出是不正確的? – jrad 2012-07-18 15:03:30
時間(0)給出不同的結果 - 你期望什麼? – 2012-07-18 15:04:01
這裏沒有奇怪的行爲。沿着移動.. :) – ltjax 2012-07-18 15:04:37