srand(time(NULL))函数

时间:2018-10-14 09:42:52

标签: c random srand time.h

#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;
}

3 个答案:

答案 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)相同)。

具有固定的随机数在某些情况下可能会有用。例如,您要使用相同的数据测试不同的功能。