c语言随机坐标函数,c语言随机数生成函数和时间函数

本文介绍C语言中随机数生成函数rand和srand的使用方法,包括如何设置随机数种子以获得不同序列的随机数。同时讲解了时间函数time的用法,通过实例演示如何获取当前时间并将其格式化为易读的日期格式。

c语言随机数生成函数和时间函数

c语言随机数生成函数和时间函数是如何生成的呢?小编为大家揭秘来了。更多内容请关注应届毕业生考试网!

8b086f96a82d505f36ff5b9f9aa27470.png

一 随机数生成函数(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

#include

int main()

{

int i,j;

i = rand();

j = rand();

printf("%d %d\n",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_t time(time_t *t);

返回:成功饭后1970年1月1日到现在的所经历的秒数,若t为非空指针,此函数也将返回值存放在t所指向的内存中,失败返回(time_t -1)值,错误在errno中。

例如:

#include

#include

int main()

{

int seconds = time(NULL);

printf("%d\n",seconds);

return 0;

}

这个返回的是秒数而不是正常日期,所以有下面的函数。

#include

char* ctime(const time_t *timep);

返回值:返回正常日期格式的字符串。

这个函数是将timep中存放的time_t类型的变量转换成真实世界的使用的日期表达,然后以字符串形式返回,例如::Wed Jun 30 21:48:09 1999

#include

#include

#include

int main()

{

time_t tm;

tm = time(0);

char *s;

s = ctime(&tm);

printf("%s\n",s);

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值