|
|
今天本来看数据结构的,结果发现有这么句话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));来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了。
|
|
相关帖子
- • 第8章 函数进阶与按键8.5
- • 第2章 点亮你的LED 2.1 2.2 2.3
- • 这是定义的问题吗,用的c语言,怎么都改不对
- • adc_dma进行采集时打印数据为0,不开dma数据能够正常显示,想问一下是什么原因
- • 单片机不使用外部中断,如何LED显示程序?
- • 做了个替BF7612CM的测试
- • Keil程序求助,这些报错怎么解决,小白一个,刚接触单片机
- • 求用at89c51单片机测LM331 V/F转化后的频率 我的没有显示
- • MCU模拟SPI通信,能发送数据,接收不到数据
- • 菜鸟求助 这个问题怎么解决,已经在oledfont.h定义了 还是报错
- • STM32单片机向ESP8266发送指令,设置延时1秒上传一次数据,延时不准确
- • 单片机矩阵按键 原理图+源代码
- • 通过手机蓝牙APP发出控制指令,控制3个以上LED灯亮灭和蜂鸣器报警和关闭,怎么做 求指导
- • 关于用51单片机驱动AD9851的原理及其编程思路?
- • 单片机用点阵LED实现静态字符显示实验程序
- • 关于单片机矩阵键盘多位数的输入程序问题
- • CCS10.2编译器貌似不支持部分GNU的__attribute__
- • STM32于OLED1.54寸的屏幕资料
- • 基于89C52单片机的时钟设计经验分享
- • [原创文档分享]一步一步写带界面的程序(基于EasyX等库) 第三版 C/C++语言
|
|
|
|
|
|