Linux 获取随机数
来源:互联网 发布:电视软件破解论坛 编辑:程序博客网 时间:2024/06/05 14:23
- 伪随机法
伪随机法就是通过一个确定性的算法来获取看似随机或者乱序,在计算伪随机序列时,如果使用的开始值不变化的,实际上获取到的随机序列的值顺序是保持不变。例如在C中比较常用的随机函数rand(),是比较典型的伪随机法。
在调用rand()函数时,没有显示的调用srand()函数来设置随机序列开始种子的话,默认随机序列的种子即为1,此时的随机序列为:1804289383
846930886、1681692777、1714636915、1957747793、424238335、719885386、1649760492。
rand()函数是实现在glibc库中,运行于用户态,运行效率比较高效;
- 真随机法
真随机法,在在计算机环境中,主要是依赖于计算机环境中的背景操作,例如来自驱动程序或者其他来源的背景噪声。真随即法具有不可预测和再现性,原因在于产生随机数的操作系统所处的环境充满了未知性。在Linux中,/dev/random产生的是真正的随机数序列。
随机函数发生器通过驱动程序或者其他来源来获取环境噪声来计算出一个随机数,同时将产生的随机数放入到随机数池中,每次需要随机数时,从池中获取一个数据数即可,如果随机池已空,从/dev/random读取数据时,将会被阻塞,直到新的随机数被放入到池中才会返回,这个地方无疑是个巨大的坑,当面对大量的请求需要随机数时。
/dev/unrandom,也是从随机池中获取一个随机数,与/dev/random的区别点在于随机池为空时,随机数的程度不够高。
调用/dev/(u)random获取随机数的方法,相比rand()方法效率会低很多,每获取一次random值,均需要发起一次系统调用,来调用该值。
示例代码为:
FILE *fs_p = NULL;
fs_p = fopen ("/dev/urandom", "r");
fread(&seed, sizeof(int), 1, fs_p); //obtain oneunsigned int data
fclose(fs_p);
- linux 获取随机数函数
- Linux 获取随机数
- 从Linux内核中获取真随机数
- PBC库在linux下获取随机数
- LINUX SHELL 获取随机数方法总结
- linux shell随机数获取的方法
- 从Linux内核中获取真随机数
- php学习笔记--获取Linux随机数
- 获取随机数
- 获取随机数
- 获取随机数
- 随机数获取
- 获取随机数
- 转载_从Linux内核中获取真随机数
- 获取系统信息2——linux中使用随机数
- shell学习二十六--linux下随机数获取方法
- Linux 随机数
- Flash.获取随机数
- 黑马程序员——拷贝文件
- 黑马程序员——泛型集合
- 3.2 支持不同屏幕
- 黑马程序员——交通灯管理系统
- 黑马程序员——银行业务调度系统
- Linux 获取随机数
- 微信删除好友对方知道吗?
- 一个好的RTSP测试源
- Oracle11g使用sql_monitor实时监控sql
- 黑马程序员——线程
- Qt学习——类之间通过信号与槽建立通信
- HDU 1024(动态规划+滚动数组+决策优化,求m个不相交字段和最大值)
- 黑马程序员——String 和StringBuffer的区别
- 最牛B的编码套路