0

我不明白为什么我的程序会为每一轮生成相同的随机数字。事实上,除非我退出并重新启动程序,否则这个数字不会改变。由于我是 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;
}
4

5 回答 5

2

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

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

于 2013-03-28T08:47:46.110 回答
2

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

此外,必须在使用 播种随机生成器之后进行调用srand,就像@ZdeslavVojkovic 正确提到的那样

于 2013-03-28T08:48:27.317 回答
0

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

于 2013-03-28T08:52:39.317 回答
0

你只要getComputerChoice()在下面写getPlayerChoice(),你的问题就解决了。

playerChoice = getPlayerChoice();
computerChoice = getComputerChoice();
于 2013-03-28T08:55:16.027 回答
0

您的算法存在问题,您在 main() 开始时只调用一次 getComputerChoice(),但您需要在 do ... while 中执行此操作:

...
if(playQuitOption == 'p' || playQuitOption == 'P')
    {
        cout << endl;

        playerChoice = getPlayerChoice();
        computerChoice = getComputerChoice();
...
于 2013-03-28T09:00:47.370 回答