#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)
相同(。
在某些情况下,拥有固定的随机数可能很有用。例如,您希望使用相同的数据测试不同的函数。