资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
混合同余法产生均匀分布随机数产生方法总结主要学习混合同余法产生各种分布的随机数的方法,见参考文献 1, 2,重点参考 2。其中要注意混合同余法产生随机数的参数的选取。1 混合同余法产生均匀分布的随机数1.1 混合同余法通过同余运算生成伪随机数的方法称为同余法,常用的同余法包括加同余法、乘同余法、混合同余法、除同余法。其中乘同余法和混合同余法的性能更好,有速度快、内存省、周期长、统计特性好等优点。混合同余法是 Lehmer在 1951 年提出的,其迭代公式为 2:* MERGEFORMAT (1.1)-1mod(,)nnXACM* MERGEFORMAT (1.2)Y=/公式* MERGEFORMAT (1.1)、* MERGEFORMAT (1.2)中,mod 表示求余函数, 均为正整数。其中 是模数, 是乘数, 是增量, 为初始,CMAAC0X值 ,当 时,称此算法为乘同余法;若 ,则称算法为混合()0X=0同余法,当 取不为零的适当数值时,有一些优点,但优点并不突出,故常取。 是在 内服从均匀分布的随机变量, 则是在 内服从均匀=Cn(, ) nY(0, 1)分布的随机变量。式中 的取值并不是随意的,模 大小是发生器0,XACMM周期长短的主要标志,常见有 为素数,取 为 的原根,则周期 。A=-T试验统计表明,用以下参数进行混合同余法产生的随机序列的统计特性较好:* MERGEFORMAT (1.3)31-1=mod(345926+480625,)nn* MERGEFORMAT (1.4)3-X(,)n* MERGEFORMAT (1.5)735-1X=mod(2+,)nn* MERGEFORMAT (1.6)20-04* MERGEFORMAT (1.7)17-(7,)=,5nnT* MERGEFORMAT 1363410-0=od5X22(1.8)* MERGEFORMAT (1.9)17124012-0m(,)=,nnT* MERGEFORMAT (1.10)3-10=od9X任* MERGEFORMAT (1.11)-(687,2),nnX* MERGEFORMAT 31-005任(1.12)* MERGEFORMAT (1.13)15-1=mod(986+2,-)nn在式* MERGEFORMAT (1.10)* MERGEFORMAT (1.12)中 ,3=2-T16807、32719 、1220703125 都是 的原根。312-混合同余法产生的随机序列具有以下特点: 重复周期较小,由于 取值在 内,其周期 , 受nXnX(0, )M的值得影响,在编程实现时,浮点运算也会对 产生影响0,ACMT 用此方法产生的随机序列,在一个周期内任意两个随机数不可能相等,这往往与实际情况不相符经 Hull 和 Dobell 证明,只有 满足以下一些关系才能实现周期最0,XACM大化,即 ,条件如下:=T 与 互质(或互素,即它们的最大公约数为 1)CM 设 为某一质数, 分别能被 和 4 整除,且 能被 和 4 整除qq()A-q产生具有最大周期的伪随机序列的混合同余法算法为:* MERGEFORMAT (1.14)-1mod(a+)(2c),knnXX* MERGEFORMAT (1.15)Y=/k由于 时, 只有一个素数因子 2,且 4 也是 的因子,此时 ,=2,kMM=4+Aa正好满足了 的第二个条件;而此时 刚好与 互质,即满足 的=TM=2+1CcM=T第一个条件。1.2 改进的混合同余法改进的混合同余法的迭代公式如下 2:* MERGEFORMAT (1.16)-1mod(,)nnXAM* MERGEFORMAT (1.17)Y=/改进的混合同余法具有以下特点: 比混合同余法产生的周期长, T 允许某个伪随机数重复发生,且重复发生的次数为 T/ 伪随机序列的周期 一般与初始值 的选取无关,只有极个别的情况除外0X1.3 原根相关知识1.3.1 欧拉函数在数论,对正整数 n,欧拉函数是少于或等于 n 的数中与 n 互质的数的数目。此函数以其首名研究者欧拉命名,它又称为 Eulers totient function、 函数、欧拉商数等。 例如 (8)=4,因为 1,3,5,7 均和 8 互质。1.3.2 原根定义 1 设 m 1,(a, m) = 1,则使* MERGEFORMAT (1.18)(mod )ra成立的最小的正整数 r,称为 a 对模 m 的指数,记为 m(a),在不致误会的情况下,简记为(a)。由 Euler 定理,当 r = (m)时式(1)成立,因此,恒有 m(a) (m)。若 a b (mod m),(a, m) = 1,则显然有 m(a) = m(b)。定义 2 若 m(a) = (m),则称 a 是模 m 的原根。例如,当 m = 7 时,因为21 2,2 2 4,2 3 1 (mod 7),所以 7(2) = 3。又因为31 3,3 2 2,3 3 6,3 4 4,3 5 5,3 6 1 (mod 7),所以 7(3) = 6 = (7),3 是模 7 的原根。以后,在谈到 a 对模 m 的指数时,总假定 m 1,(a, m) = 1。参考文献1 吴飞. 产生随机数的几种方法及其应用J. 数值计算与计算机应用, 2006, (01): 48-51.2 郭凤鸣. 一种生成大周期伪随机数的新算法改进的混合同余法J. 地球科学, 1992, (06): 733-738.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号