减去或添加到随机数生成器

时间:2014-01-27 22:12:02

标签: c random

我遇到这个问题,生成的rand num不会增加我喜欢的方式。我已经尝试了多种方法来增加值,如果用户输入-1或减少值是用户输入1.如果用户输入-1,投影输出x应该在第一个输出和上限值之间增加,如果如果用户输入1,则应在第一个输出和下限值之间找到一个。我的部分代码如下。任何帮助表示赞赏。

我试过没有运气:

i = x (rand() % (upper + lower));
x = i +1;

部分代码:

switch(input)
{
case -1:
{
x = x+1+ (rand() % (upper-x-1));
printf("My guess is %d \n", x);
break;
}

case 0:
{
printf("I win\n");
break;
}

case 1:
{
x = (rand() % (upper+lower)) +lower;
printf("My guess is %d \n", x);
break;
}
default: printf("Wrong choice try again\n");
break;
编辑:更改了-1的情况,但它增加4然后增加1并停在55这是正确的但我无法弄清楚跳过4.我正在尝试另一种方式,如果用户输入lower = 1如果生成的第一个数字是35,则上限= 55,那么它将在该范围内的36-54之间搜索,但是像42这样的随机数不仅仅增加1。

1 个答案:

答案 0 :(得分:1)

在我看来,你试图以错误的方式生成随机数。要像你所描述的那样制作一个下限和上限,试试这个:

x = lower + (rand() % (upper-lower)); // lower <= x < upper

在-1的情况下,您可以尝试使用x+1作为下限。在减少数量的情况下,使上限等于x

case -1:
{
  if (x < upper-1) {
    x = x+1 + (rand() % (upper-x-1));
  }
...

case 1:
{
  if (x > lower) {
    x = lower + (rand() % (x-lower));
  }
...

我不确定您在upperlower变量中定义了哪些值,但只确保下限小于上限。我还添加了一个特殊条件,其中可以发生除零。

相关问题