bli*_*eus 1 c++ random stl shuffle
我试图改变一副牌,但random_shuffle每次产生相同的结果
void
Deck::shuffle() {
cout << "SHUFFLING CARDS!!!\n\n";
srand(time(0));
random_shuffle(cards.begin(), cards.end());
displayCards();
}
Run Code Online (Sandbox Code Playgroud)
那是因为你每次都将伪随机数生成器播种到相同的值:
srand(time(0));
Run Code Online (Sandbox Code Playgroud)
time如果我没有弄错的话,粒度是秒.如果在执行调用之间暂停执行一段时间,Deck::shuffle()应该会看到不同的结果.
从函数中删除该行,并在程序开始时调用它一次.