我一直在试图编写一个用于生成随机值的小C函数。问题是每次在for循环中调用函数时它都会返回相同的值。我明白问题是srand是用NULL播种的。我想知道的是如何纠正它,因此在for循环的每次迭代中函数都会返回一个不同的值。下面的代码:如何使随机值函数每次返回不同的值
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int randInt(int,int);
void main(){
int min=100, max=200,i=0;
for(i;i<11;i++){ printf("%d \n",randInt(min,max)); }
}
int randInt(int a,int b){
srand(time(NULL));
int randValue;
randValue=1+(int)rand()%(b-a+1);
return randValue;
}
请让我知道,如果你有一个解决方案,也可以张贴一些参考的解决方案。先谢谢你 !
编辑:遇到问题#2,在将srand(time(NULL))换成main后,现在每次迭代都会在我的范围内产生数字,即最初我想要的数字在100到200之间,但它也包含0和100。这与randValue=a+(int)rand()%(b-a+1);
解决作为意见提出
不要在随机函数内调用'srand'。 – 2014-09-13 10:41:23
展开退休忍者的评论。 srand用于(一次)初始化,然后rand用于检索值。 – 2014-09-13 10:46:51
谢谢,忍者,它的工作!现在,再一个小问题 - 我试图产生从100到200的数字,但函数生成值在100以下。我该如何解决这个问题? – 2014-09-13 10:47:19