C语言 srand(time(NULL)) function


#include <stdio.h>
#include <stdlib.h>
int main( void){
int x = rand()%100;
printf("%dn", x);
return 0;
}

上面的代码正确生成了一个随机数。这是对的吗?但是,其他来源总是包括库和srand(time(NULL((。为什么我们必须包含库和srand(NULL((?有什么理由要包括吗?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void){
srand(time(NULL));
int x = rand()%100;
printf("%dn", x);
return 0;
}

因为如果你多次运行这段代码,你会得到相同的结果!(此外,rand()每次运行中返回相同的结果(。因此,您可以在每次代码运行中初始化随机种子,以通过srand获得不同的随机结果。使用time(NULL)通过srand设置不同的随机种子。

srand

是一个随机数生成器函数,它将随机化rand函数产生的数字。

想象一下,你有一个(巨大的(图书馆,里面装满了(显然是随机的,但固定的(数字的(巨大的(书籍。

当你这样做rand()你会得到当前书籍上的当前数字并前进到下一本书。

当您执行srand(<number>)时,您可以选择rand()从那时起将使用的书籍。

time(NULL)返回自大约午夜 1970-01-01 以来的秒数(转换后(。该数字每秒都会变化,因此使用该数字来"选择一本书"几乎可以保证每次程序运行时都有新的"随机"数字序列。

如果您没有选择一本书,rand()函数将从书籍 #1 中获取数字(与srand(1)相同(。

在某些情况下,拥有固定的随机数可能很有用。例如,您希望使用相同的数据测试不同的函数。

最新更新