Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中通过函数的随机数(初学者程序员)_C_Function_Random - Fatal编程技术网

C中通过函数的随机数(初学者程序员)

C中通过函数的随机数(初学者程序员),c,function,random,C,Function,Random,我创建了一个简单的游戏,让用户猜测1到10之间的随机数。它工作得很好,然后我对它进行了调整,在这里我制作了一个函数,它有两个参数,一个高值和一个低值,来生成一个随机数。当函数返回随机数时,通过函数执行此操作总是返回作为参数输入的最大数字的值。这是我的密码: #include "stdio.h" #include "stdlib.h" #include "time.h" int main(void) { int storedNum, low, high, userGuess; pri

我创建了一个简单的游戏,让用户猜测1到10之间的随机数。它工作得很好,然后我对它进行了调整,在这里我制作了一个函数,它有两个参数,一个高值和一个低值,来生成一个随机数。当函数返回随机数时,通过函数执行此操作总是返回作为参数输入的最大数字的值。这是我的密码:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int main(void) {

  int storedNum, low, high, userGuess;

  printf("Welcome to my random numbers game! You will choose a lower number and a maximum number and me, the computer, will choose a random number between those two values for you to guess.\n\nFirst, choose the lowest value");
  scanf("%d", &low);
  printf("Now, choose the highest value");
  scanf("%d", &high);

  storedNum = randomNumbers(low, high);
  printf("We have guessed a number between %d and %d. Guess our number!: ", low, high);
  scanf("%d", &userGuess);

  while (userGuess != storedNum){
    if(userGuess < storedNum){
      printf("higher!: ");
      scanf("%d", &userGuess);
    }
    else{
      printf("Lower!: ");
      scanf("%d", &userGuess);
    }
  }

  printf("You are correct the number was %d!", storedNum);
  return 0;
}

int randomNumbers(int maxNum, int minNum){
  int number;
  srand(time(NULL));
  number = rand()%maxNum + minNum;
  return number;
}
无论我输入什么数字,它总是返回最大值(在本例中为10)。提前感谢您的帮助,我希望这篇文章能让您感觉良好。

rand()非常直截了当

 rand()%maxNum + minNum;
rand()
将生成一个介于
0
rand\u MAX
之间的数字


rand%maxNum
将是一个数字
对,我只是想弄清楚为什么它在主方法中的行为与在函数中的行为不同。不要在函数中设置随机种子。它不添加任何额外的随机数。在
main
中执行一次。可能不是问题的根本原因,而是:
随机数(低、高)-->
随机数(高、低)。或者交换函数定义中的参数顺序。我已经尝试过了,但仍然遇到同样的问题,很抱歉,我也应该把它放在帖子中,我会编辑。我尝试在调用函数之前放置种子,但它仍然会产生相同的结果。不过谢谢你。@kaylum我觉得自己像个十足的白痴。当然,我忽略了这么简单的事情。非常感谢你的帮助这是唯一的错误,非常感谢你抓住了我的愚蠢。这段代码应该为丢失的原型生成警告。不要写古C!多亏了这个公式,当涉及到更大的数字时,我遇到了一些问题,然而,我的实际问题在于,当我调用函数时,我的参数放在了错误的位置。这么简单的东西哈!非常感谢这个公式,不过它会派上用场的!
 rand()%maxNum + minNum;