C ++ rand()保持返回相同的数字

时间:2013-03-28 08:44:59

标签: c++

我无法弄清楚为什么我的程序会为每一轮产生相同的随机数字。事实上,除非我退出并重新启动程序,否则数字不会改变。由于我是C ++的新手,这应该是一个我不知道的相当微不足道的错误。以下是我的代码,并提前感谢您的帮助。

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;

int getRandNum();

int main()
{
    int randNum = getRandNum();

    srand((unsigned int) time(NULL));

.
.
.

}

int getRandNum()
{
    int randNum;

    randNum = rand() % 3 + 1;

    return randNum;
}

5 个答案:

答案 0 :(得分:2)

您从功能rand致电getComputerChoice()。 但是,在使用srand设置种子之前会调用该函数。

您需要在第一次调用srand函数之前致电rand,这也意味着在getComputerChoice之前

答案 1 :(得分:2)

您只需调用一次computerChoice函数,并将此结果用于所有后续操作。

此外,必须在使用srand播种随机生成器之后进行调用,就像@ZdeslavVojkovic

正确提到的那样

答案 2 :(得分:0)

您需要将int computerChoice = getComputerChoice();移至do循环内。上面的代码在开始时选择一个选项,然后从不选择另一个。

答案 3 :(得分:0)

您只需在getComputerChoice()下方写下getPlayerChoice(),您的问题就会得到解决。

playerChoice = getPlayerChoice();
computerChoice = getComputerChoice();

答案 4 :(得分:0)

算法出现问题,你在main()的开头只调用一次Computer Choice(),但你需要在你的do ... while:

中执行此操作
...
if(playQuitOption == 'p' || playQuitOption == 'P')
    {
        cout << endl;

        playerChoice = getPlayerChoice();
        computerChoice = getComputerChoice();
...