c中time函数的用法以及随机数的产生

来源:互联网 发布:淘宝网的特点 编辑:程序博客网 时间:2024/05/16 15:58

1. c语言中time函数的用法,头文件time.h:

机器日历时间也就是从一个时间点(例如 1970年1月1日0时0分0秒)到现此时的秒数。

函数名称:time

函数原型:time_t time(time_t *timer)

函数功能:得到机器的日历时间或者设置日历时间

函数返回:机器日历时间  

参数说明:timer=NULL时,得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一个long型

对于这个函数来说,如果已经声明了参数t,那么可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间。
如果参数为空,函数只通过返回值返回现在的日历时间。
                                                                                                                                                         


对于上面的代码来说,两次打印出来的结果是一样的,我运行的时候都是1493382283,所以time(&t)中,变量t中存放当前的日期和时间(相当于函数返回值)。

time_t是长整型,所以打印的时候要用ld格式。


2.c语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数。是根据一个数(可以称之为种子)为基准以某个递推公式推算出来的一系列数,当这一系列数很多的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是确定的,除非你破坏了系统。为了改变这个种子的值,c提供了srand()函数,原型为void srand(int a)。

rand()会返回一个随机数,范围在0~RAND_MAX之间,RAND_MAX定义在stdlib.h,在调用次函数产生随机数之前,必须先利用srand()设置好随机数种子,如果没有设置种子,rand()在调用的时候回自动设随机数种子为1.

因此,可以用下面的方式产生不可预见的随机序列:

srand((unsigned int)(time(NULL))

因为每一次运行程序的时间是不同,所以无论什么时候都可以给srand()提供一个新的种子,从而进一步“随机化”rand()输出的结果。


产生i`j之间的随机数,示例代码:

int random(int i,int j){int number;number=rand()%(j-i+1)+i;   return(number);}void main(){  int i;  srand(time(0));for(i=0;i<10;i++){  printf("%d\n",random(0,1));} }