C++ 使AI循环正确?
我正在为一个猜谜游戏制作人工智能,我遇到了一个我自己似乎无法解决的问题。目标是让用户输入一个数字,让AI在合理的时间内猜测,我生成一个介于1-100之间的随机数,并通过一个循环来调整下限或上限C++ 使AI循环正确?,c++,visual-c++,C++,Visual C++,我正在为一个猜谜游戏制作人工智能,我遇到了一个我自己似乎无法解决的问题。目标是让用户输入一个数字,让AI在合理的时间内猜测,我生成一个介于1-100之间的随机数,并通过一个循环来调整下限或上限 void AI::AIguess(int usernum) { srand(time(NULL)); AIchoice = rand() % High + Low; // "too high" or "too low" accordingly do {
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);
}
void AI::AIguess(int usernum)
{
srand(时间(空));
Achoice=rand()%高+低;
//相应地“过高”或“过低”
做{
if(AIchoice==usernum)
{
cout间隔代码中的随机数是错误的。若要生成介于min
和max
之间的数字,请执行(rand()%(max-min))+min
所以改变
AIchoice=rand()%High+Low;
到
AIChoice=(rand()%(高-低))+低;
只要让你知道,如果你想马上给它分配另一个值,你不需要设置AIChoice=0。啊,我知道我哪里出错了,非常感谢:)@rbrducky如果答案正确,请这样标记:)你可能知道一种更快找到数字的方法吗?可能需要2-13次尝试,我想将其始终保持在7以下。@rbr幸运的是,您可以尝试使用某种权重(每次更改时,将High
或Low
加/减/乘/除一些数字)或者您可以更改初始的高值
或低值
值,使其更接近用户输入的数字。否则这有点困难,因为rand()的主要用途是不可预测