当前位置: 首页 > news >正文

大健康网站怎么样做商业网站案例教程

大健康网站怎么样做,商业网站案例教程,域名查询ip解析,网站二次开发模板目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

目录

    • 一、问题背景
    • 二、修改方法
      • 2.1 修改种子
      • 2.2 使用linux中的 /dev/urandom 生成随机数
    • 三、/dev/random 和 /dev/urandom 的原理
      • 3.1 参考连接
      • 3.2 重难点总结
        • 3.2.1 生成随机数的原理
        • 3.2.2 随机数生成器的结构
        • 3.2.3 二者的区别和选择
    • 四、在代码的使用方法

一、问题背景

在一个循环中,生成多组随机值,发现最终的结果都一样,结果是调用的函数如下,在函数中设置了随机种子,且是以秒为单位,那么在一秒类,由于都是用一个种子,srand又是伪随机,所以最终生成的都是同一组随机字符。

static void generate_random_name(char *prefix, char* secName, int size) {char buff[7] = {0};srand(time(NULL));const char ALLOWED[] = "abcdefghijklmnopqrstuvwxyz1234567890";int i = 0;int c = 0;int nbAllowed = sizeof(ALLOWED) - 1;for(i = 0; i < 6; i++) {c = rand() % nbAllowed ;buff[i] = ALLOWED[c];}snprintf(secName, size, "%s_%s", prefix, buff);return;}

二、修改方法

2.1 修改种子

(1)将srand(time(NULL)); 放到循环外面,循环过程中不必每次循序都设置种子;
(2)时间使用微秒来设置种子srand((unsigned int)ts.tv_usec);以避免在短时间内多次调用随机数生成器时生成相同的序列。

2.2 使用linux中的 /dev/urandom 生成随机数

修改后的函数生成方式如下:

static void generate_section_random_name(char *prefix, char* secName, int size) {char buff[7] = {0};char cmd[BUF_LEN_128] = {0};snprintf(cmd, sizeof(cmd), "head /dev/urandom | tr -dc a-z0-9 | head -c %d", sizeof(buff) - 1);do_cmd_fetch(cmd, buff, sizeof(buff));if (buff[0]) {snprintf(secName, size, "%s_%s", prefix, buff);}return;
}

三、/dev/random 和 /dev/urandom 的原理

3.1 参考连接

/dev/random 和 /dev/urandom 的原理
关于 /dev/urandom 的流言终结
关于 /dev/urandom 的流言终结的原文
使用/dev/urandom生成固定位数的随机数

3.2 重难点总结

3.2.1 生成随机数的原理

随机数生成器会收集系统环境中各种数据,比如:鼠标的移动,键盘的输入, 终端的连接以及断开,音视频的播放,系统中断,内存 CPU 的使用等等;
生成器把收集到的各种环境数据放入一个池子 ( 熵池 ) 中,然后将这些数据进行去偏、漂白,主要目的也是使得数据更加无序,更加难以猜测或者预料得到;
有了大量的环境数据之后,每次获取随机数时,从池子中读取指定的字节序列,这些字节序列就是生成器生成的随机数.

3.2.2 随机数生成器的结构

Linux 4.8 之前
在这里插入图片描述
Linux 4.8 以后
在这里插入图片描述
简化图
在这里插入图片描述

3.2.3 二者的区别和选择

具体的可以看我上述分享的两篇文章。
别问,问就是用 /dev/urandom !

四、在代码的使用方法

首先/dev/urandom 设备生成的随机字节流通常是不经过编码的原始字节,因此直接将其打印到终端可能会显示为乱码。这是因为终端尝试使用默认的字符编码(通常是 UTF-8)来解释这些字节,但这些字节可能不是有效的 UTF-8 字符。

在这里插入图片描述
所以需要做一些转化,比如

1.将随机字节转换为十六进制表示:
head -c 10 /dev/urandom | xxd -p
2.将随机字节转换为可打印字符集合:
head -c 10 /dev/urandom | tr -dc '[:print:]'
3.将随机字节转换为Base64编码(可能更适合在终端中显示):
head -c 10 /dev/urandom | base64

当然也可以使用/dev/urandom生成固定位数的随机数:

1.纯数字
head /dev/urandom | tr -dc 0-9 | head -c n
2.小写字母+数字
head /dev/urandom | tr -dc a-z0-9 | head -c n
3.大小写字母+数字
head /dev/urandom | tr -dc A-Za-z0-9 | head -c n

最后的n代表要生成的随机数的位数

http://www.yayakq.cn/news/21059/

相关文章:

  • 哈尔滨建设网站门户网站每年的维护费
  • wordpress怎么开启多站点网站接任务来做
  • seo蒙牛伊利企业网站专业性诊断外贸信托
  • 免费网站app下载汅api外网访问wordpress全站路径设置
  • jsp网站开发源码手机登录微信网页版
  • 网站统计如何做wordpress app for ios 3.4下载
  • 微信网站如何制作软件厦门排名推广
  • 网站建设经验交流发言通化好的网站建设的公司
  • 建设网站课程设计摘要网站开发命名规则
  • 汉中微信网站建设公司dw模板制作网站的缺点
  • 常用来做网站首页wordpress导航背景图片
  • python整合网站开发技术网站设计工资一般多少
  • 网站建设考评表做ps图标什么网站最好
  • 十大行情软件网站下载小游戏网页版入口
  • 唐山建站公司保定徐水网站建设
  • 长沙做网站zwnet公众号网站建设
  • WordPress移动站wordpress首页文件夹
  • 重庆万州网站建设费用天津市建设工程管理总队网站
  • 政务公开 网站建设滞后郑州网站建设定制开发
  • 个人网站页面广东网络营销全网推广策划
  • 做设计需要知道的几个网站网站源码是用什么做的
  • 自助模板网站建设做seo邯郸网络教研平台登录
  • 做网站平台难在哪里烟台优化网站公司哪家好
  • 计算机网站建设毕业设计题目电子商务网站建设与维护 教材
  • 适合企业做外贸的几个网站南宁建筑网站
  • 重庆市建设医院网站首页教你做兼职的网站
  • 悉知网站建设wordpress文章指定页面显示标题
  • 你的安全设置不允许网站成品图片的网站有哪些
  • 网站弹出qq聊天窗口浙江省住建厅证书查询
  • 做微信的网站叫什么名字福州网站建设网络公司排名