我无法弄清楚为什么我的程序会为每一轮产生相同的随机数字。事实上,除非我退出并重新启动程序,否则数字不会改变。由于我是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;
}
答案 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();
...