c语言随机数生成函数和时间函数
C语言随机数生成函数和时间函数是如何生成的呢?小编为大家揭秘来了。更多内容请关注应届毕业生考试网!
一 随机数生成函数(rand,srand)
1)首先,随机数在stdlib.h定义了一个RAND_MAX的宏#define RAND_MAX 0x7fff,也就是不调用srand,只进行rand的话,返回一个[0,32767]的数(闭区间)。
2)随机数种子
void srand(unsigned seed);
如果在rand()前没有调用它,会自动调用一次srand(1)一次。但seed就成了定值,每次运行程序时,产生的随机数都会相同(这个值在[seed,0x32767]之间)。
例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
i = rand();
j = rand();
printf("%d %dn",i,j);
return 0;
}
这个程序每次结果都是:14 18767
所以一般用一个变量作为seed,一般用到目前为止流逝的时间。
即srand((unsigned int)time(NULL));
3)随机数范围
rand()返回一个0~RAND_MAX的随机数,一般这个不是你想得到的数据范围,需要进行调整,比较常用的是'%'和'/'操作,如果需要一个0~100的随机数那么就rand()0好了,很容易理解。如果你需要一个浮点数,可以考虑用除法,注意运算时的数据转换操作,rand()返回的'是整数,RAND_MAX也是整数,如果你想得到一个0到1的浮点数,你这样写rand()/RAND_MAX你就大错特错了,这样的结果是0,原因仔细想想也很简答,基本的C语言运算数据类型提升问题,小数部分的尾巴取整的时候舍掉了,解决方法也很简单rand()/(RAND_MAX-0.0),一个产生指定范围随机数的函数大概是这样的:
srand((unsigned int)time(0));
double randval(double low, double high)
{
double val;
val = ((double)(rand()/(RAND_MAX-0.0))*(high - low)) + low;
return(val);
}
c语言中的时间函数:
#include <time.h>
time_t time(time_t *t);
返回:成功饭后1970年1月1日到现在的所经历的秒数,若t为非空指针,此函数也将返回值存放在t所指向的内存中,失败返回(time_t -1)值,错误在errno中。
例如:
#include <time.h>
#include <stdio.h>
int main()
{
int seconds = time(NULL);
printf("%dn",seconds);
return 0;
}
这个返回的是秒数而不是正常日期,所以有下面的函数。
#include <time.h>
char* ctime(const time_t *timep);
返回值:返回正常日期格式的字符串。
这个函数是将timep中存放的time_t类型的变量转换成真实世界的使用的日期表达,然后以字符串形式返回,例如::Wed Jun 30 21:48:09 1999
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
time_t tm;
tm = time(0);
char *s;
s = ctime(&tm);
printf("%sn",s);
}
-
C语言在屏幕中显示内容
C语言你了解多少呢?你知道C语言在屏幕中显示内容是什么样的吗?欢迎大家阅读!更多相关信息请关注相关栏目!我们有两种方式从计算机获得信息:一是看屏幕上的文字、图片、视频等,二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦,我们先来看看如何在屏幕上显示一...
-
2017年计算机二级C语言考点习题
计算机二级考试知识点的掌握对考生来说是比较重要的,下面是本站小编为各位考生整理的2017年计算机二级C语言考点习题,希望你的的考试有所帮助!1.在深度为5的满二叉树叶中,叶子结点的个数为()。A.32B.31C.16D.152.软件生命周期中,花费最多的阶段是()。A.详细设计B....
-
C语言中递归函数的教学方法
导语:函数递归基于分治法思想,将复杂的大规模问题转化为小规模问题进行求解,在算法设计中具有重要的理论意义和实用价值,是C语言教学的难点。下面就由小编为大家介绍一下C语言中递归函数的教学方法,欢迎大家阅读!1.引言C语言是一种语法简洁紧凑、运算符丰富、可移植...
-
如何使用C语言求N的阶乘
使用C语言求N的阶乘的方法是很多小伙伴都想知道的,下面小编给大家介绍如何使用C语言求N的阶乘,欢迎阅读!如何使用C语言求N的阶乘用递归法求N的.阶乘程序调用自身称为递归(recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求...