我正在为猜谜游戏制作AI,但遇到了一个我似乎无法自行解决的问题。目标是让用户输入一个数字,以便AI在合理的时间内猜测,我正在生成一个介于1到100之间的随机数,并通过循环运行它来调整上下限。
void AI::AIguess(int usernum)
{
srand(time(NULL));
AIchoice = rand() % High + Low;
// "too high" or "too low" accordingly
do {
if (AIchoice == usernum)
{
cout << AIchoice << " is this correct?" << endl;
}
else if (AIchoice <= usernum)
{
cout << AIchoice << " seems a little low.." << endl;
Low = AIchoice;
AIchoice = 0;
AIchoice = rand() % High + Low;
AIguesses++;
}
else if (AIchoice >= usernum)
{
cout << AIchoice << " might have overshot a bit :/" << endl;
High = AIchoice;
AIchoice = 0;
AIchoice = rand() % High + Low;
AIguesses++;
}
} while (AIchoice != usernum);
}
我正在使用上一个生成的号码作为下一个生成号码的参数,以期获得用户号码。它在if语句可以分别进行精细调整和分别调整上限和下限之间跳动,但是我面临的问题是AIchoice经过几次循环后AIchoice开始添加100以上。有人可以帮助我吗?
P.S:非常感谢任何有用的AI创建信息:)
答案 0 :(得分:1)
您在间隔代码中的随机数是错误的。要生成介于min
和max
之间的数字,请执行(rand() % (max - min)) + min
。
所以改变
AIchoice = rand() % High + Low;
至
AIChoice = (rand() % (High - Low)) + Low;