2015-04-20 73 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.薩馬拉斯會做..但有一個最低時間需要通過顯然 –