猿问

在单个函数中调用时,rand()返回相同的值

在单个函数中调用时,rand()返回相同的值

我是一个C ++新手,我很难过。我需要在我的main函数中调用这个函数三次,但每次它给我相同的结果,即pull_1,pull_2,pull_3是相同的。我需要做些什么来使它们实际上是随机的?

string PullOne(){
    string pick;
    string choices[3] = {"BAR", "7", "cherries"};

    std::srand(time(0));
    pick = choices[(std::rand() % 3)];
    return pick;}

从我的主要功能:

string pull_1, pull_2, pull_3;pull_1 = PullOne();pull_2 = PullOne();pull_3 = PullOne();


万千封印
浏览 622回答 3
3回答

慕神8447489

你为什么一直打电话std::srand(time(0));?重新播种PRNG ....并且因为这一切都在同一秒内发生,所以你总是以相同的顺序重新播种它。在你的程序中调用srand 一次,只调用一次。此外,我建议,至少在符合POSIX标准的系统上,std::srand(time(0) ^ getpid())这样,你可以在同一个“秒”内运行你的程序两次,并仍然得到一个新的PRNG序列。
随时随地看视频慕课网APP
我要回答