random_shuffle每次产生相同的结果

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)

jro*_*rok 5

那是因为你每次都将伪随机数生成器播种到相同的值:

srand(time(0));
Run Code Online (Sandbox Code Playgroud)

time如果我没有弄错的话,粒度是秒.如果在执行调用之间暂停执行一段时间,Deck::shuffle()应该会看到不同的结果.

从函数中删除该行,并在程序开始时调用它一次.