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

更新时间:2023-05-14 00:23:10 阅读: 评论:0

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

c语言是编程常用的语言之一。c语言随机数生成函数和时间函数是如何生成的呢?下面是整理的c语言随机数生成函数和时间函数,仅供参考,希望能够帮助到大家。

一 随机数生成函数(rand,srand)

1)首先,随机数在stdlib.h定义了一个RAND_MAX的宏#define RAND_MAX 0x7fff,也就是不调用srand,只进行rand的话,返回一个[0,32767]的数(闭区间)。

2)随机数种子

void srand(unsigned ed);

如果在rand()前没有调用它,会自动调用一次srand(1)一次。蟹肉饭但ed就成了定值,每次运行程序时,产生的随机数都会相同(这个值在[ed,0x32767]之间)。

例如:

#include

#include

int main()

{

int i,j;

i = rand();

j = rand();

printf("%d %d ",i,j);

return 0;

}

这个程序每次结果都是:14 18767

所以一般用一个变量作为ed,一般用到目前为止流逝的时间。

即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()/(R阿肯色州AND_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 conds = time(NULL);

printf("%d "金丝峡景区;,conds);

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 ",s);

}

拓展:C语言基本算法

1.交换通信英语(两量交换借助第三者)

例1、任意读入两个整数,将二者的值交换后输出。

main()

{int a,b,t;

scanf("%d%d",&a,&b);

printf("%d,%d ",a,b);

t=a; a=b; b=t;

printf("%d,%d ",a,b);}

【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。

假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。

其中t为中间变量,起到“空杯子”的作用。

注意:三句赋值语句赋值号左右的各量之间的关系!

【应用】

例2、任意读入三个整数,然后按从小到大的顺序输出。

main()

{int a,b,c,t;

scanf("%d%d%d",&a,&b,&c);

if(a>b){ t=a; a=b; b=t; }

if(a>c){ t=a; a=c; c=t; }

if(b>c) { t=b; b=c; c=t; }

printf("%d,%d,%d ",a,b,c);}

2.累加

累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。&ldqu棋的种类o;A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。

例1、求1+2+3+……+100的和。

main()

{int i,s;

s=0; i=1;

while(i<=100)

{s=s+i;

i=i+1;

}

printf("1+2+3+...+100=%d ",s);}

【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。

3.累乘

累乘算法的要领是形如“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。“A”通常是许博淳有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为1。

例1、求10!

[分析]10!=1×2×3×……×10

main()

{int i; long c;

c=1; i=1;

while(i<=10)

{c=c*i;

i=i+1;

}

printf("1*2*3*...*10=%ld ",c);}

<

本文发布于:2023-05-14 00:23:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/86/744693.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   随机数   语言   时间
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图