使AI正确循环?

时间:2018-12-17 21:04:13

标签: c++ visual-c++

我正在为猜谜游戏制作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创建信息:)

1 个答案:

答案 0 :(得分:1)

您在间隔代码中的随机数是错误的。要生成介于minmax之间的数字,请执行(rand() % (max - min)) + min

所以改变 AIchoice = rand() % High + Low;AIChoice = (rand() % (High - Low)) + Low;