随机数和时间

在c语言中,我们偶尔会因为某些需求需要用到随机数。那怎么样勒?
头文件:#include <stdlib.h>
函数: int ra = rand(); 注意可以对rand函数进行操作,如%51,即对随机数的值进行限定,此处限定在050范围之内,rand()%101+20,此处可以理解为rand()%101和+20,前部分将随机数值的范围限定在0100,然后通过+20将范围改为20~120。
产生随机数的实质:首先如果个人尝试的话会发现如果在一个C程序内仅有一个rand(),然后打印该随机值,那么多次、反复运行该程序都仅出现这么一个相同的值,并不能达到所谓”随机“的效果,此时的原因是:

实际上,rand() 函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值我们称之为“种子”。种子和随机数之间的关系是一种正态分布,如下图所示:

种子和随机数

种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。解决的办法是借用srand函数重新“
播种”

time函数有最常用的三个函数:
clock函数,用来返回计算程序或程序的某一段的执行时间。
首先结构体clock_t 定义变量;
clock_t start_t,finish_t;定义两个变量分别用来计算程序开始时间和结束时间,两者相减就是程序执行的时间。获得当前时间都是用到clock函数;例:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
      clock_t start_t,finish_t;
      start_t = clock();
      …………        //计算该段程序的执行时间
      finish_t = clock();
      total_t = (double)(finish_t - start_t);
      printf("%lf",total_t);
      return 0;
}

time函数返回当前时间(从1970-01-01 00:00:00到现在的秒数),在time函数内加一个NULL参数,就不举例勒。
curtime函数以字符串形式返回当前时间;

include

include<stdio.h>

include<stdlib.h>

int main()
{
time_t curtime;
time(&curtime);
printf("now time = %s\n",ctime(curtime));
return 0;
}

posted @ 2020-09-11 18:49  小酷蛙  阅读(516)  评论(0)    收藏  举报