前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C-Linux_毫秒级随机值获取

C-Linux_毫秒级随机值获取

作者头像
诺谦
发布2019-05-24 20:29:24
2.9K0
发布2019-05-24 20:29:24
举报
文章被收录于专栏:Linux驱动

秒级随机值-常用方法:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <time.h>

int main(void)
{
int buf[10],i,j;
srand((unsigned)time(NULL));

for(i=0; i<10; i++)
{
        buf[i]=rand()%100;
        printf("%d      ",buf[i]);
}
 printf("\n");
 return 0;
}

上面的srand((unsigned)time(NULL));表示给rand()产生随机值的种子.

其中(unsigned)time(NULL)则将当前时间转为一个正整数,也就是说,如果我们如果在小于1秒之内多次运行该代码,则随机值都是相同的.

编译运行-如下图所示,可以看到如果运行时间小于1秒时,则随机值都是相同的:

毫秒级实现

  • 可以通过ftime()函数来获取timeb结构体,既可实现毫秒级随机数变化了

其中ftime()函数如下:

代码语言:javascript
复制
int ftime(struct timeb *tp);

其中timeb结构体定义如下:

代码语言:javascript
复制
struct?? timeb{
time_t time;            /* 为1970-01-01至今的秒数*/
unsigned short millitm; /* 毫秒值 */
short timezonel;   /* 为目前时区和Greenwich相差的时间,单位为分钟 */
short dstflag;      /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */
};

代码如下所示:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <time.h>
#include <sys/timeb.h>

int main(void)
{
int buf[10],i,j;
struct timeb timer;
ftime(&timer);
srand(timer.time * 1000 + timer.millitm);

for(i=0; i<10; i++)
{
        buf[i]=rand()%100;
        printf("%d      ",buf[i]);
}
 printf("\n");
 return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档