我想做一個猜謎遊戲程序,其中用戶認爲1到100之間的數字,然後計算機隨機生成(猜測)1到100之間的數字。然後用戶告訴計算機它們的號碼是否更高(H),更低(L)或相同(Y)作爲猜測數量。我遇到的問題是改變計算機生成及其在猜測的範圍內。修改蘭德()範圍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 /庫/ 1_60_0/DOC/HTML/boost_random.html)。 – krlmlr