C语言srand和rand用法详解

来源:本站
导读:目前正在解读《C语言srand和rand用法详解》的相关信息,《C语言srand和rand用法详解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言srand和rand用法详解》的详细说明。
简介:本文主要对C语言中srand和rand的用法进行详解。

今天本来看数据结构的,结果发现有这么句话srand(time(0)),注释是初始化随机数种子,结果发现time(0)不解,好像以前看到过,然后网上查了下,发现了time.h这个头文件中有此函数

typedef long time_t;

time_t time(time_t *);

这个函数的返回值和形参都是返回从1970年1月1日0时0分0秒到现在的秒数,所以用long型,当然也可以给形参传个NULL

往后看了下,还有几个实用函数

struct tm * gmtime(const time_t *);

struct tm * localtime(const time_t *);

tm定义成以下结构体

struct tm {

inttm_sec;

inttm_min;

inttm_hour;

inttm_mday;

inttm_mon;

inttm_year;

inttm_wday;

inttm_yday;

int tm_isdst;

};

看这函数名一个是获取格林威治时间,另一个是获取本地时区的时间

于是写了个程序测了下,还真是如此

time_t timer;

tm *stm;

time(&timer);

stm=localtime(&timer);

然后当前的时间信息就被保存在stm指向的结构体中。

好了回到正题

函数一:int rand(void);

从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。

函数二:void srand(unsigned seed);

参数seed是rand()的种子,用来初始化rand()的起始值。

seed如果是固定值,那么每次产生的随机数也是固定不变的,通常的做法是以这样一句代码srand((unsigned)time(NULL));来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了。

提醒:《C语言srand和rand用法详解》最后刷新时间 2024-03-14 00:58:32,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言srand和rand用法详解》该内容的真实性请自行鉴别。