自学内容网 自学内容网

C语言剖析:srand()/rand()/time()

一、铺垫

1.srand()函数是一个设置随机数种子生成器的函数;

void srand(unsigned int seed)

2.根据函数的参数表示,诸位可以知道,参数是一个无符号int类型;中文名称叫做种子(一般称为随机数种子);所以srand()函数叫做随机数种子生成器;srand->set rand;

3.rand()函数,才是随机数生成器(随机数生成 函数);

4.rand()函数

int rand(void)

5.其中rand()函数运行时,会在[seed,RAND_MAX(0X7fff))区间内生成其中的随机整数;其中的seed就是srand()函数中,传进去的参数seed(随机数种子);如果用户在此之前,没有调用srand()函数;就默认seed值等于1;

6.在每一次调用rand()函数时,都会调用srand()函数,都会重新生成随机数种子,来生成随机数;如果不指定随机数种子,就默认是1;

二、举例

调用一次srand(时间戳)函数,之后再调用了两次rand()函数 ,过程是什么样子的?

答:第一次调用srand()函数,是在告诉操作系统,srand()函数会使用时间戳作为seed的值;(如果把调用 srand(常量) 那就把seed变成了定值;)

第一次调用rand()函数时,会自动的获取当前的时间戳作为seed值;生成随机数;

注:每个时间戳之间都存在间隔,各不相同;

第二次调用rand()函数时,会自动的获取当前的时间戳作为seed值;生成随机数;

srand()函数可以理解为 控制Linux进程信号的一个函数;只要响起这个信号,就会自动调用某个函数,只能类比理解;


原文地址:https://blog.csdn.net/qincjun/article/details/143833396

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!