2015-04-20 47 views
0
int random(){//function for random number generation 
time_t t; 
srand((unsigned) time(&t)); 
int rand = rand()%468; 
return rand; 
} 

我想把这个函数在一个循环,因此循环的每次迭代中分配的随机数的变量,所以我想我会尝试这个办法:函数调用

for(x=0;x<n;x++){ 
y=random(); 
printf("%d\n",y); 
} 

然而,这不起作用,因为我的预期,Ÿ只是从第一次迭代获得数字,并重复它,有人可以解释我可以如何强制函数调用,因此它会为y设置一个新的值?

+1

在程序开始时调用'srand * *一次*。 – crashmstr

回答

7

在致电rand()之前,您不应每次拨打srand()

您呼叫srand()的方式总是传递相同的值作为种子,因为在秒每次调用之间不同的是0,因为它比1s小了很多。

因为你总是rand()之前调用srand()使用相同的种子,右,你会从rand()总是得到相同的值

只需在程序开始时调用srand()一次,因此在每次运行中都会生成不同的随机数。

+0

我甚至没有考虑过,谢谢 –

+0

@BlazeBlue你应该接受他的答案。 :) – gsamaras

+0

@ G.萨马拉斯会做..但有一个最低时间需要通过显然 –