时间戳和随机数的总结以及显示年月日与时间的函数
来源:互联网 发布:淘宝十大男模 编辑:程序博客网 时间:2024/06/07 06:13
时间戳是指从1970年1月1日到此刻一共的时间秒数。Windows上C库函数time(NULL),产生随机数函数一般是利用时间戳。
但是首先应该有个概念:计算机不会产生绝对的随机数,计算机只能产生“伪随机数”,“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。
有关时间戳和随机数的函数:
time(NULL); 时间戳
srand(time(NULL));设置随机数种子
rand();
注意:srand(a) ,它只是定义了一种规则,当a的值确定时,产生的随机数不会发生变化,因为time(NULL)是每一秒在变化的(概念),这也是利用他做产生随机数的原因之一。
改进:因为time(NULL)的变化周期是1s,所以当产生随机数的周期<1s时,产生的随机数不会发生变化,可以加变量k---->srand(time(NULL)+k++);
rand()%n+1:产生的随机数范围是1--n;
附自己写的小程序,初学阶段,有很多可以改进和错误的地方望大家指正!!!
实时显示当前年月日及时间,用到 / %;
注:平年闰年:能被4整除不能被100整除 || 能被400整除 是闰年,2月29天
void my_time();
void my_ymd();
void mt_select();
void mt_pmonth();
int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年
int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //闰年
int main()
{
my_ymd();
my_time();
return 0;
}
{
/*time1是当前时间戳,days是1970年一月一日到现在的天数
tyear是年的周期数(平、平、平、闰,1461天一个周期)
dyear是不足一个周期的天数,t_year是1970+周期*4*/
int time1,days,tyear,dyear;
int t_year;
time1=time(NULL);
days=time1/(24*60*60); //当前时间戳对一天的总秒数去整,得到总天数
tyear=days/1461; //总天数对1461取整得到周期数
dyear=days%1461; //得到不足一个周期的天数
t_year=1970+tyear*4; //当前年份
if(dyear<365)
{
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear);
}
if(dyear<365+365)
{
t_year+=1;
dyear-=365;
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear); //将不足一年的天数作为实参传至mt_select函数中
}
if(dyear<365+365+365)
{
t_year+=2;
dyear-=(365+365);
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear);
}
else
{
t_year+=3;
dyear-=(365+365+365);
printf("%d年是闰年,当前时间是:%d 年 ",t_year,t_year);
key=0;
mt_select(dyear);
}
}
void mt_select(int m) //根据平年和闰年选择计算月份的函数
{
switch(key)
{
case 1:mt_pmonth(m);break; //m接收的dyear,传至sday1
case 0:mt_rmonth(m);break;
}
}
void mt_pmonth(int sday1) //计算月份,sday1:平年一年内剩的天数
{
int i,temp,nmonth,nday;
for(i=0;i<12;i++) //对月份的数组相减,得到月份
{
temp=sday1-month1[i];
sday1=temp;
nmonth=i+1;
if(temp<=0)
{
printf("%d月 ",nmonth);
break;
}
}
nday=temp+month1[i];
printf("%d日\n",nday);
}
void mt_rmonth(int sday2) //计算月份,sday2:闰年一年内剩的天数
{
int i,temp,nmonth,nday;
for(i=0;i<12;i++)
{
temp=sday2-month1[i];
sday2=temp;
nmonth=i+1;
if(temp<=0)
{
printf("%d月 ",nmonth);
break;
}
}
nday=temp+month2[i];
printf("%d日\n",nday);
{
int shi,time1,shi1,shi2;
int fen,fen1,fen2,miao,miao1,miao2;
while(1) //死循环,使不断的获取当前时间戳
{
time1=time(NULL);
shi=time1%(24*60*60)/(60*60)+8;
shi1=shi/10;
shi2=shi%10;
fen=time1%(24*60*60)%(60*60)/60;
fen1=fen/10;
fen2=fen%10;
miao=time1%(24*60*60)%(60*60)%60;
miao1=miao/10;
miao2=miao%10;
printf("%d%d:%d%d:%d%d\r",shi1,shi2,fen1,fen2,miao1,miao2);
}
printf("\n");
}
但是首先应该有个概念:计算机不会产生绝对的随机数,计算机只能产生“伪随机数”,“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。
有关时间戳和随机数的函数:
time(NULL); 时间戳
srand(time(NULL));设置随机数种子
rand();
注意:srand(a) ,它只是定义了一种规则,当a的值确定时,产生的随机数不会发生变化,因为time(NULL)是每一秒在变化的(概念),这也是利用他做产生随机数的原因之一。
改进:因为time(NULL)的变化周期是1s,所以当产生随机数的周期<1s时,产生的随机数不会发生变化,可以加变量k---->srand(time(NULL)+k++);
rand()%n+1:产生的随机数范围是1--n;
附自己写的小程序,初学阶段,有很多可以改进和错误的地方望大家指正!!!
实时显示当前年月日及时间,用到 / %;
注:平年闰年:能被4整除不能被100整除 || 能被400整除 是闰年,2月29天
#include <stdio.h>
#include <time.h>
{void my_time();
void my_ymd();
void mt_select();
void mt_pmonth();
void mt_rmonth();
int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年
int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //闰年
int main()
{
my_ymd();
my_time();
return 0;
}
{
/*time1是当前时间戳,days是1970年一月一日到现在的天数
tyear是年的周期数(平、平、平、闰,1461天一个周期)
dyear是不足一个周期的天数,t_year是1970+周期*4*/
int time1,days,tyear,dyear;
int t_year;
time1=time(NULL);
days=time1/(24*60*60); //当前时间戳对一天的总秒数去整,得到总天数
tyear=days/1461; //总天数对1461取整得到周期数
dyear=days%1461; //得到不足一个周期的天数
t_year=1970+tyear*4; //当前年份
if(dyear<365)
{
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear);
}
if(dyear<365+365)
{
t_year+=1;
dyear-=365;
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear); //将不足一年的天数作为实参传至mt_select函数中
}
if(dyear<365+365+365)
{
t_year+=2;
dyear-=(365+365);
printf("%d年是平年,当前时间是:%d 年 ",t_year,t_year);
key=1;
mt_select(dyear);
}
else
{
t_year+=3;
dyear-=(365+365+365);
printf("%d年是闰年,当前时间是:%d 年 ",t_year,t_year);
key=0;
mt_select(dyear);
}
}
void mt_select(int m) //根据平年和闰年选择计算月份的函数
{
switch(key)
{
case 1:mt_pmonth(m);break; //m接收的dyear,传至sday1
case 0:mt_rmonth(m);break;
}
}
void mt_pmonth(int sday1) //计算月份,sday1:平年一年内剩的天数
{
int i,temp,nmonth,nday;
for(i=0;i<12;i++) //对月份的数组相减,得到月份
{
temp=sday1-month1[i];
sday1=temp;
nmonth=i+1;
if(temp<=0)
{
printf("%d月 ",nmonth);
break;
}
}
nday=temp+month1[i];
printf("%d日\n",nday);
}
void mt_rmonth(int sday2) //计算月份,sday2:闰年一年内剩的天数
{
int i,temp,nmonth,nday;
for(i=0;i<12;i++)
{
temp=sday2-month1[i];
sday2=temp;
nmonth=i+1;
if(temp<=0)
{
printf("%d月 ",nmonth);
break;
}
}
nday=temp+month2[i];
printf("%d日\n",nday);
}
{
int shi,time1,shi1,shi2;
int fen,fen1,fen2,miao,miao1,miao2;
while(1) //死循环,使不断的获取当前时间戳
{
time1=time(NULL);
shi=time1%(24*60*60)/(60*60)+8;
shi1=shi/10;
shi2=shi%10;
fen=time1%(24*60*60)%(60*60)/60;
fen1=fen/10;
fen2=fen%10;
miao=time1%(24*60*60)%(60*60)%60;
miao1=miao/10;
miao2=miao%10;
printf("%d%d:%d%d:%d%d\r",shi1,shi2,fen1,fen2,miao1,miao2);
}
printf("\n");
}
阅读全文
0 0
- 时间戳和随机数的总结以及显示年月日与时间的函数
- js实现年月日 当前时间的显示
- iphone时间戳与时间之间的相互转换,随机数的使用总结
- PHP 显示当前年月日的方法集合时间戳转化为时间格式
- PHP 获取指定年月日的开始和结束时间戳
- json格式的时间显示为正常年月日的方法
- javascript显示年月日时间
- 状态栏时间显示年月日
- 在页面显示年月日和具体时间
- 使用Jquery动态显示年月日星期时间的代码段
- 用js显示今天的时间,年月日,包括星期几
- TP只保留年月日,不显示具体时间的写法
- Delphi 获取时间的年月日
- Delphi 获取时间的年月日
- PHP取得时间的年月日
- IOS 时间年月日的加减法
- JavaScript 显示当然日期和时间,年月日星期和时间
- 电子表代码,用C语言写的,可以显示系统时间和年月日,而且可以改变时间!
- Java web加载资源方法
- 奶牛的生日 C++ AC
- POJ 1015 Jury Compromise (dp)
- 利用sklearn实现简单的KNN
- 基于JavaMail的Java邮件发送:简单邮件发送
- 时间戳和随机数的总结以及显示年月日与时间的函数
- 面向对象——接口
- 微店 Android 插件化实践
- C++动态内存管理
- java异常处理之try...catch...finally详解
- 顺序容器
- Kotlin for Android(三)Kotlin数据类型
- 判断俩个链表是否相交,若相交求交点(考虑带环和不带环)
- 基于JavaMail的Java邮件发送:复杂邮件发送