首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

能否证明,伪随机序列的产生规则能覆盖范围内的所有值?解决方案

2012-02-25 
能否证明,伪随机序列的产生规则能覆盖范围内的所有值?例如X(n+1)(a*X(n)+c) mod M 产生0到M-1之内的所有

能否证明,伪随机序列的产生规则能覆盖范围内的所有值?
例如X(n+1)=(a*X(n)+c) mod M 产生0到M-1之内的所有值

但是,我想举出一个反例,这样的式子

x0=1,公式X(n+1)=2*X(n)+4 mod 7
产生1,6,2,1这样的循环,就缺少了3,4,5这几个值,并没有覆盖啊。
感觉这个伪随机算法有问题


[解决办法]
没法证明。。
只能说当a、c足够大,相当来说m足够小,那么可以认为能产生0到M-1之内的所有值

[解决办法]
随机算法都是重复的,一般都是通过改变随机种子的值,也就是x(0)的值,通常拿时间的ms值来产生随机种子,这样就可以得到全覆盖的值了。
[解决办法]
线性同余方法并没有保证能够覆盖[0, m-1]所有的值。要做到覆盖,需要认真选择各种系数。

热点排行