我知道rand()函數會生成相同的數字(s),如果您不更改種子編號,則每個函數都會運行它。這就是srand()進來的地方。時間總是在變化,所以我知道你應該把時間(空)參數傳遞給srand。我的問題是從教程網站下面的代碼。srand與rand函數的關係如何?
int main()
{
int i, n=5;
time_t t;
/* Intializes random number generator */
srand((unsigned) time(&t));
/* Print 5 random numbers from 0 to 50 */
for(i = 0 ; i < n ; i++) {
printf("%d\n", rand() % 50);
}
return(0);
}
我看到從函數srand
((unsigned) time(&t));
和蘭德沒有任何聯繫。
printf("%d\n", rand() % 50);
rand和srand之間的連接在哪裏?我的意思是或者期望的是我假設rand()會從srand()得到一些參數,所以它知道每次都會產生不同的數字。我相信它會看起來像蘭特(函數srand(時間(空));
這就像初始化的變量,而不使用它給我函數srand正在初始化,但我沒有看到它被用來
rand是否會生成不同的數字,因爲srand在rand之前先被調用?
在命令行結果的不同演替,你可以看到通過輸入'man 3 rand'和'man 3 srand'來記錄這些功能。 – tlehman