修改 rand() 范围 c++
Modifying rand() ranges c++
我正在尝试制作一个猜谜游戏程序,用户想一个 1 到 100 之间的数字,然后计算机随机生成(猜测)一个 1 到 100 之间的数字。然后用户告诉计算机是否他们的数字更高(H),更低(L),或相同(Y)猜测的数字。我遇到的问题是更改计算机生成猜测的范围。
所以假设我的号码是 43 并且计算机生成 15 作为它的猜测。我会输入H,说明我的数字比它猜的要高。然后计算机更改参数以生成介于 16 和 100.
之间的数字
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
而我不断更改和更新最大值和最小值。
你基本上是在正确的轨道上。使用 rand() % n
将为您提供 half-open 范围 [0, n) 中的值。因此,如果您想要 0 到 100 之间的数字,请使用 rand() % 101
。当您有最大值和最小值时,n
就是 max - min + 1
。这为您提供了从 0 开始的一系列值。要获得从 min
开始的一系列值,只需将 min
添加到该值。
我正在尝试制作一个猜谜游戏程序,用户想一个 1 到 100 之间的数字,然后计算机随机生成(猜测)一个 1 到 100 之间的数字。然后用户告诉计算机是否他们的数字更高(H),更低(L),或相同(Y)猜测的数字。我遇到的问题是更改计算机生成猜测的范围。
所以假设我的号码是 43 并且计算机生成 15 作为它的猜测。我会输入H,说明我的数字比它猜的要高。然后计算机更改参数以生成介于 16 和 100.
之间的数字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
而我不断更改和更新最大值和最小值。
你基本上是在正确的轨道上。使用 rand() % n
将为您提供 half-open 范围 [0, n) 中的值。因此,如果您想要 0 到 100 之间的数字,请使用 rand() % 101
。当您有最大值和最小值时,n
就是 max - min + 1
。这为您提供了从 0 开始的一系列值。要获得从 min
开始的一系列值,只需将 min
添加到该值。