码迷,mamicode.com
首页 > 其他好文 > 详细

随机数生成算法(伪随机数)

时间:2014-06-07 13:17:10      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:random   随机数生成算法   

什么是伪随机数,它和随机数的区别

伪随机就是一个过程看似随机的,但实际还不是随机的。伪随机数都是有一定的周期性的,如使用24小时里面的一个小时,这个就是伪随机数,或者三角函数的一个角度的三角函数值,因为时有周期性所以是伪随机的。

记住一点事要做到真正的随机有:抛硬币,热噪讯号、量子力学的效应、放射性元素的衰退辐射,或使用无法预测的现象等。

计算机里面的随机数主要还是用伪随机数来实现的,例如以当前时间作为种子。

伪随机数实现的算法

线性同余方法

它是根据递归公式:

bubuko.com,布布扣

其中bubuko.com,布布扣是产生器设定的常数。

LCG的周期最大为bubuko.com,布布扣,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:

  1. bubuko.com,布布扣互质
  2. bubuko.com,布布扣的所有质因子都能整除bubuko.com,布布扣
  3. bubuko.com,布布扣是4的倍数bubuko.com,布布扣也是;
  4. bubuko.com,布布扣都比bubuko.com,布布扣小;
  5. bubuko.com,布布扣是正整数。

平方取中法

算法:

  1. 选择一个bubuko.com,布布扣位数bubuko.com,布布扣作为种子。
  2. 计算bubuko.com,布布扣
  3. bubuko.com,布布扣不足bubuko.com,布布扣个位,在前补0。在这个数选中间bubuko.com,布布扣个位的数,即bubuko.com,布布扣bubuko.com,布布扣的数,将结果作为bubuko.com,布布扣

M-sequence 

M-sequence(Maximum length sequenceMLS、最大长度串行)是在基本的通信电路设计中,所经常被利用到的一个虚拟随机数字信号《Pseudo Random Sequence》,其主要的方式是利用第一位与其他位暂存器的输出值做ex-or来设计其第一位暂存器的输入值。

梅森旋转法

这个有点难有空再理解:维基百科的解答

内容主要来自维基百科,变成维基百科搬运工了:点击打开链接


随机数生成算法(伪随机数),布布扣,bubuko.com

随机数生成算法(伪随机数)

标签:random   随机数生成算法   

原文地址:http://blog.csdn.net/dafeng_blog/article/details/28468443

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!