C++ 使AI循环正确?

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 {

我正在为一个猜谜游戏制作人工智能,我遇到了一个我自己似乎无法解决的问题。目标是让用户输入一个数字,让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);
}
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()的主要用途是不可预测