我知道rand()函数如果不改变种子数,每次运行都会生成相同的数字。这就是srand()函数的用处所在。由于时间始终在变化,因此我知道应该将time(null)参数传递给srand。我的问题是关于下面来自教程网站的代码。
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));
并且 rand.
printf("%d\n", rand() % 50);
rand和srand之间有什么联系?我的意思或期望是,我假设rand()会从srand()获取一些参数,以便它知道每次生成不同的数字。我假设它看起来像rand(srand(time(null));
对我来说,这就像初始化一个变量而不使用它。srand被初始化了,但我没有看到它被使用。
rand是否生成不同的数字,因为在rand之前先调用srand?