随机数生成算法(伪随机数)
2014-06-04 22:25
399 查看
什么是伪随机数,它和随机数的区别
伪随机就是一个过程看似随机的,但实际还不是随机的。伪随机数都是有一定的周期性的,如使用24小时里面的一个小时,这个就是伪随机数,或者三角函数的一个角度的三角函数值,因为时有周期性所以是伪随机的。记住一点事要做到真正的随机有:抛硬币,热噪讯号、量子力学的效应、放射性元素的衰退辐射,或使用无法预测的现象等。
计算机里面的随机数主要还是用伪随机数来实现的,例如以当前时间作为种子。
伪随机数实现的算法
线性同余方法平方取中法
M-sequence
梅森旋转算法
线性同余方法
它是根据递归公式:其中
是产生器设定的常数。
LCG的周期最大为
,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:
互质;
的所有质因子都能整除
;
若
是4的倍数,
也是;
都比
小;
是正整数。
平方取中法
算法:选择一个
位数
作为种子。
计算
若
不足
个位,在前补0。在这个数选中间
个位的数,即
至
的数,将结果作为
。
M-sequence
M-sequence(Maximumlength sequence、MLS、最大长度串行)是在基本的通信电路设计中,所经常被利用到的一个虚拟随机数字信号《Pseudo
Random Sequence》,其主要的方式是利用第一位与其他位暂存器的输出值做ex-or来设计其第一位暂存器的输入值。
梅森旋转法
这个有点难有空再理解:维基百科的解答内容主要来自维基百科,变成维基百科搬运工了:点击打开链接
相关文章推荐
- 用伪随机数生成器Random生成随机数序列
- 随机数生成算法的研究
- 使用洗牌算法生成随机数序列
- 生成n个从1到M(n <= M)之间的不重复的随机数问题(洗扑克牌算法)
- 非重复随机数生成算法
- 用伪随机数生成器Random生成随机数序列
- 随机数生成算法-初探
- 生成不重复随机数的一种算法
- 生成不重复随机数的一种算法。
- 生成一串随机数的算法_发牌问题
- 生成不重复随机数的一种算法
- 一个伪随机数生成算法
- 一个生成伪随机数的超级算法【转】
- 生成不重复随机数的算法
- 伪随机数生成算法
- 生成随机数的一个可靠算法,高质量的均匀分布的随机函数
- 算法问题征解:怎样生成随机数而不借助任何工具?
- 一个简单的随机数生成算法实现(C++)
- 对于生成大量的无重复随机数的一个算法!
- 随机数生成算法-二谈