当前位置:才华咖 > 互联网计算机 > 计算机 > C语言 > c语言随机数生成函数和时间函数
手机版

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

来源:才华咖 阅读:5.05K 次

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);

}

本文链接:https://www.caihuaka.com/jsjzs/cyuyan/lxn99.html

Copyright © 2024. 才华咖 All right reserved. 浙ICP备20120231号-3

文字美图素材,版权属于原作者。部分文章内容由网友提供推送时因种种原因未能与原作者联系上,若涉及版权问题,敬请原作者联系我们,立即处理。