Я пытаюсь создать программу угадывания игр, в которой пользователь думает о числе от 1 до 100, а затем компьютер случайно генерирует (догадывается) число от 1 до 100. Затем пользователь указывает на то, что их номер выше (H), ниже (L) или же (Y) в качестве угадываемого номера. Проблема, которую я имею меняется диапазон, что компьютер генерирует свое предположение в.Модифицирование диапазонов rand() C++
Так скажем, мой номер и компьютер генерирует как его догадку. Я бы ввел H, указав, что мой номер выше его догадки. Затем компьютер изменяет параметры для генерации номера между и .
int high = 100, low = 1;
char answer;
Установка переменных.
srand(time(0));
У меня есть это, чтобы по-настоящему случайным образом генерировать.
int guess = rand() % high + low;
cout << "Is your number " << guess << "?\n";
cin >> answer;
Сформировать номер, спросить, если число это то, что я имею в виду, а затем просить меня, чтобы ответить, если она выше, ниже, или исправить.
Затем сегмент, который проверяет ответ и определяет, как изменить диапазон случайно сгенерированного номера.
switch (answer)
{
case 'H':
low = (guess + 1);
high = (high - guess);
break;
case 'L':
high = guess;
break;
default:
break;
}
Я предполагаю, что я не понимаю, как работает rand(). Как я понимаю, весь
rand() % 100 //range of 0 and 99
rand() % 100 + 1 // range of 1 and 100
Но я хочу знать, как я могу изменить параметры так, что я получаю
rand() % max + min // range of min and max
в то время как я постоянно менять и обновлять значения для макс и мин.
Вы имеете в виду, если 'min = 3' и' max = 10', то вы хотите угадать где-то между 3 и 10? Если это так, тогда вы просто будете делать rand()% (max + 1 - min) + min'. – Cornstalks
Если вы можете, используйте лучший RNG, такой как [встроенные в C++ 11] (http://en.cppreference.com/w/cpp/numeric/random) или [Boost] (http: // www .boost.org/DOC/LIBS/1_60_0/DOC/HTML/boost_random.html). – krlmlr