gpt4 book ai didi

c++ - 有不合逻辑错误的数字猜谜游戏

转载 作者:行者123 更新时间:2023-11-28 00:31:55 25 4
gpt4 key购买 nike

#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;
srand(time(NULL));

int main(){
int botguess;
int playerinput;
int mi=1, ma=100;
int turns = 0;
cout<<" what do you want guessed:";

cin>> playerinput;
cout<< "time for me to start guessing\n";

for(int i = 0;i < 50;i++) {
botguess = rand() % ma + mi;

if(playerinput > botguess){ //<--the problem
mi = botguess;
}

if(playerinput < botguess) {
ma = botguess;
}

cout<<"Max:"<<ma<<"\n"<<botguess<<"\n";
Sleep(1000);
if(botguess == playerinput)
{
cout<<"you win";
}
}

cin.get();
return 0;
}

所以我一直在为为什么这在逻辑上行不通而绞尽脑汁。这是一个应该快速但不是立即猜测玩家号码的程序。该程序并不像看起来那样执行。

我注意到的行导致了一个错误,其中忽略了可能的最大数量。我得到的数字是 100+ 但低于 200,我不知道为什么。当我删除有关嵌套在 for 循环语句中的 mi 变量的行时。该程序不会超过 100,但我没有得到程序的另一端来解决玩家号码。

此外,如果您弄清楚了,能否请您向我解释一下,我不只是想要一个答案。

最佳答案

botguess = rand() % (ma - mi + 1) + mi

您不需要ma 个不同的数字,您需要的数量要少得多。看一个例子:(5..10) 包含 6 个不同的数字:[5, 6, 7, 8, 9, 10] ;但是如果你执行 rand() % 10 + 5,你会得到从 5 (5 + 0) 到 14 的数字(5 + 9)。您需要的是 rand() % 6 + 5,其中 610 - 5 + 1

关于c++ - 有不合逻辑错误的数字猜谜游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com