#include <stdio.h>
#include <stdlib.h>
int main( void){
int x = rand()%100;
printf("%d\n", x);
return 0;
}上面的代码正确地生成一个随机数。这是正确的吗?但是,其他源总是,包括库和srand(time(NULL))。为什么我们必须包括,包括库和srand(时间(空))?有什么理由包括在内吗?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void){
srand(time(NULL));
int x = rand()%100;
printf("%d\n", x);
return 0;
}发布于 2018-10-14 09:45:32
因为如果您多次运行此代码,您将得到相同的结果!(而且,rand()在每次运行时返回相同的结果)。因此,您可以在代码的每次运行中初始化随机种子,以通过srand获得不同的随机结果。使用time(NULL)通过srand设置不同的随机种子。
发布于 2018-10-14 09:46:30
srand是一个随机数产生函数,它将rand函数产生的数随机化。
发布于 2018-10-14 09:54:10
想象一下,你有一个(巨大的)图书馆,里面装满了(显然是随机的,但固定的)数字。
当您执行rand()时,您将得到当前图书上的当前号码,并进入下一本。
当您执行srand(<number>)时,您将从这一点开始选择rand()将使用的书。
time(NULL)返回大约从1970-01-01午夜开始的秒数(转换后).这个数字每秒钟都会发生变化,所以使用这个数字来“选择一本书”可以保证每次程序运行时都会出现一个新的“随机”数字序列。
如果您不选择一本书,rand()函数将从书#1 (与srand(1)相同)中获取数字。
在某些情况下,有固定的随机数可能是有用的。例如,您希望用相同的数据测试不同的函数。
https://stackoverflow.com/questions/52801380
复制相似问题