以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。

1、随机数和伪随机数

  • 随机数是随机出现,没有任何规律的一组数列。
  • 真正的完全随机的数列是不存在的,只是一种理想情况。
  • 一般只能通过一些算法得到一个伪随机数序列。
  • 平时说到随机数,基本都指的是伪随机数。

2、linux中随机数相关API

  • 连续多次调用rand函数可以返回一个伪随机数序列;
  • srand函数用来设置rand获取的伪随机序列的种子。

3、实战演示

#include <stdio.h>
#include <stdlib.h>int main(int argc, char **argv)
{int i = 0, val = 0;/*    if (argc != 2){printf("usage: %s num\n", argv[0]);return -1;}
*/  printf("RAND_MAX = %d.\n", RAND_MAX);        // 2147483647//srand(atoi(argv[1]));srand(time(NULL));for (i=0; i<6; i++){val = rand();printf("%d ", (val % 6));}printf("\n");return 0;
}
  • 单纯使用rand重复调用n次,就会得到一个0-RAND_MAX之间的伪随机数,如果需要调整范围,可以得到随机数序列后再进行计算。
  • 单纯使用rand来得到伪随机数序列有缺陷,每次执行程序得到的伪随机序列是同一个序列,没法得到其他序列;
  • rand内部的算法是通过一个种子(seed,其实就是一个原始参数,int类型),rand内部默认是使用1作为seed的,种子一定的算法也是一定的,那么每次得到的伪随机序列肯定是同一个。
  • 要想每次执行这个程序获取的伪随机序列不同,则每次都要给不同的种子。用srand函数来设置种子。

4、总结和说明

  • 在每次执行程序时,先用srand设置一个不同的种子,然后再多次调用rand获取一个伪随机序列,这样就可以每次都得到一个不同的伪随机序列。
  • 一般常规做法是用time函数的返回值来做srand的参数。

5、在linux系统中获取真正的随机数

  • linux系统收集系统中的一些随机发生的事件的时间(譬如有人动鼠标,譬如触摸屏的操作和坐标等)作为随机种子去生成随机数序列。

获取系统信息2——linux中使用随机数相关推荐

  1. 获取系统信息1——linux系统中的时间

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.关于时间的概念 1.GMT时间 GMT是格林尼治时间,也就是格林尼治地区的当地时间: 用格林尼治的当地时间作为 ...

  2. linux中产生随机数函数,如何用C++产生随机数

    C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数. (1) 如果你只要产生随机数而不需要设定范围的 ...

  3. linux中使用随机数

    (1)单纯使用rand重复调用n次,就会得到一个0-RAND_MAX之间的伪随机数,如果需要调整范围,可以得到随机数序列后再进行计算. (2)单纯使用rand来得到伪随机数序列有缺陷,每次执行程序得到 ...

  4. Linux——获取系统信息

    目录 一.关于时间的概念 二.linux系统中的时间 三.时间相关API实战 五.proc文件系统介绍 六.proc文件系统的使用 一.关于时间的概念 1.GMT时间 (1)GMT是格林尼治时间,也就 ...

  5. 朱有鹏-3.linux应用编程和网络编程-第3部分-3.3.获取系统信息

    3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事 ...

  6. linux上无法发送163邮件,如何在linux中发送邮件,使用163邮箱发信。

    linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用  163.com    邮箱发送至 qq.com 编辑 /etc/mail.rc,写入下方的参数 se ...

  7. linux中操作文件的上传和下载

    获取权限 进入linux中,可以先获取操作权限,防止无权操作: sudo -i 然后回车 进入相应的目录下 cd /data/xxxxx 然后回车 上传文件 rz 然后回车 页面会有个弹窗让你选择需要 ...

  8. linux信息收集命令,linux中收集系统信息的一些命令

    摘要 腾兴网为您分享:linux中收集系统信息的一些命令,知富,掌上优云,掌上电力,悟空识字等软件知识,以及酷我音乐pc,国泰君安app,云校阅卷,一键超频软件,美折,三国群英私服,咔咔截屏录屏大师, ...

  9. python excel库 linux_用python写一个简单的excel表格获取当时的linux系统信息

    最近在学习excel表格的制作,顺便结合之前学习的内容,利用python的两个模板,分别是获取系统信息的psutil,和生成excel表格的xlsxwriter.利用这两个模板将生成一个简单的exce ...

最新文章

  1. 地址引用PHP,浅谈PHP变量作用域以及地址引用问题
  2. 25个必须记住的SSH命令
  3. Qt调用dll中的功能函数
  4. powershell awk_谈谈 PowerShell
  5. Linux系统瘦身裁剪 续
  6. 简单的动态JavaScript Ajax函数
  7. 开发转测试没人要_iOS13beta8发布,微信再次测试新功能
  8. 周五,放松心情,听我来分享问题背后的背后(一)
  9. 单机使用tungsten 同步mysql数据到mongodb
  10. hudson构建配置
  11. moc 文件自动生成
  12. href和src的区别
  13. 游戏服务器运维常见故障总结
  14. 不容错过, Paintinglite轻量级Sqlite3框架
  15. 误删的苹果电脑硬盘和数据库的数据怎么恢复
  16. 自然》子刊同期刊发两篇重磅论文:月球上的水很多-1
  17. Linux 7.9.三台机器机器免密码登录
  18. |密码狗|Dongle|克隆狗|U盘狗
  19. 线性代数物理意义学习(从几何角度出发,不同于数值解析解)
  20. iWatch 的text和label

热门文章

  1. mysql 行转列 (结果集以坐标显示)
  2. [LeetCode]LRU Cache有个问题,求大神解答【已解决】
  3. android学习日记12--布局管理器
  4. Dojo学习笔记(三):类化JavaScript
  5. 如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
  6. Java与.Net 在RSA加密方面能不能互相通讯操作???
  7. 好程序员前端分享使用JS开发简单的音乐播放器
  8. Spring集成redis(Spring Data Redis)
  9. scanf 输入加逗号(或者不加逗号)出现的异常及解决方案
  10. Python:字典列表字符串方法测试