#include <stdio.h>
#include <stdlib.h>
int main( void){
int x = rand()%100;
printf("%d\n", x);
return 0;
}
上面的代码正确生成一个随机数。它是否正确?但是,其他来源总是包括库和srand(time(NULL))。为什么我们必须包含 include库和srand(time(NULL))?有什么理由要包括在内吗?
#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;
}
答案 0 :(得分:2)
因为如果您多次运行此代码,您将得到相同的结果! (此外,rand()
在每次运行中都返回相同的结果)。因此,您可以在每次代码运行中初始化随机种子,以srand
获得不同的随机结果。使用time(NULL)
通过srand
设置不同的随机种子。
答案 1 :(得分:0)
regionStart + (Math.random() * range)
是一个随机数生成器函数,它将对srand
函数生成的数字进行随机化。
答案 2 :(得分:0)
想象一下,您有一个(巨大的)图书馆,里面装满(显然是随机的但固定的)数字。
当您执行rand()
时,您会在当前书上获得当前编号,然后前进到下一本书。
srand(<number>)
做完后,您将选择rand()
从那时起要使用的书。
time(NULL)
返回自1970-01-01午夜以来的秒数(转换后)。该数字每秒变化一次,因此使用该数字“选择一本书”几乎可以保证每次程序运行时都产生一个新的“随机”数字序列。
如果您不选择书籍,则rand()
函数会从书籍#1中获取数字(与srand(1)
相同)。
具有固定的随机数在某些情况下可能会有用。例如,您要使用相同的数据测试不同的功能。