摘要摘要本文着重讨论了随机数生成方法、随机数生成法比较以及检验生成的随机序列的随机性的方法。
在随机序列生成方面,本文讨论了平方取中法、斐波那契法、滞后斐波那契法、移位法、线性同余法、非线性同余法、取小数法等,并比较了各方法的优劣性。
在统计检验方面,介绍了统计检验的方法,并用其检验几种随机数生成器生成的随机数的随机性。
最后介绍了两种新的随机数生成法,并统计检验了生成随机序列的随机性。
关键词:随机数,随机数生成法,统计检验IABSTRACTABSTRACTThis article focuses on methods of random number generator, random number generation method comparison and test the randomness of the generated random sequence method.In random sequence generation, the article discusses the square method, Fibonacci method, lagged Fibonacci method, the shift method, linear congruential method, linear congruence method, taking minority law, and Comparison of advantages and disadvantages of each method.In statistical test, the introduction of the statistical test method, and used to test some random number generator random random numbers generated.Finally, two new random number generation method, and statistical tests of randomness to generate a random sequence.Key Words: random number,random number generator,statistical testII目录第1章引言 (1)1.1 课题背景 (1)1.2 课题的价值及意义 (1)1.3 课题的难点、重点、核心问题及方向 (1)第2章随机数 (3)2.1 基本概念 (3)2.2 产生随机数的一般方法 (3)2.3 随机数生成的数学方法 (4)2.4 产生随机数的方法种类 (5)2.5 随机数的应用 (6)第3章常见随机数生成法与比较 (7)3.1 平方取中法 (7)3.1.1 迭代算法 (7)3.1.2 平方取中法的优缺点 (7)3.2 斐波那契(Fibonacci)法 (8)3.3 滞后斐波那契(Fibonacci)法 (9)3.4 移位法 (9)3.5 线性同余法 (10)3.5.1 模数的选取 (10)3.5.2 乘数的选取 (11)3.5.3 线性同余法的缺陷 (12)3.5.4 广义线性同余法 (12)3.6 非线性同余法 (13)3.6.1 逆同余法 (13)3.6.2 二次同余法 (14)3.6.3 三次同余法 (14)3.6.4 BBS法 (14)3.7 取小数法 (14)III3.8 常见随机数生成法的比较 (15)第4章随机数生成法的统计和检验 (16)4.1 检验类型 (16)4.2 统计检验的一般方法 (16)4.2.1 参数检验 (17)4.2.2 均匀性检验 (18)4.2.3 重要分布 (18)4.2.4 重要定理 (19)4.2.5 卡方检验 (20)4.2.6 柯氏检验 (20)4.2.7 序列检验 (21)4.3 独立性检验 (22)4.4 对线性同余法和取小数法进行随机性检验 (22)第5章新的随机数生成法 (24)5.1 开方取小数法 (24)5.2 一种混合型随机数发生器 (28)5.2.1 超素数长周期法 (28)5.2.2 组合发生器的研究 (30)5.2.3 随机数算法统计检验结果 (30)结束语 (32)参考文献 (33)致谢 (34)外文资料原文 (35)翻译文稿 (37)IV第1章引言第1章引言1.1课题背景随机数(随机序列)在不同的领域有许多不同类型的应用。
如雷达中的测距信号,遥控遥测中的测控信号,数字通信中的群同步和加扰解扰信号,无线通信码分多址系统中的扩频信号等都要用到随机序列。
在用计算机的教学与学习中,也经常需要用到随机数,比如,数据结构中关于一个数据的存储地址,在各种程序设计语言学习中遇到的随机量的生成,图像处理中遇到的随机色彩的选择等,枚不胜举,随机数在计算机的应用中就显得格外重要。
尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用C语言类库中的随机函数已难以胜任相应的工作。
现实中,用投色子计数的方法产生真正的随机数,但电脑若也这样做,将会占用大量内存;虽然用噪声发生器或放射性物质也可产生真正的随机数,但操作不可重复。
而用数学方法产生随机数则最适合计算机,这就是“伪随机数”。
我们需要的随机数序列应具有非退化性,周期长,相关系数小等优点。
迄今为止,研究人员提出了许多不同的随机数生成方法,如平方取中法,同余法,斐波那契序列变形法,混沌序列法,利用系统时间和热噪声等等。
随着新的随机数性能测试方法的提出,已经证明其中的某些生成方法有其固有的缺陷。
同时对测试方法的研究也是一个不断发展的过程。
1.2课题的价值及意义由于现在对随机数的公认定义中,只给出了随机数的性质描述,而没有给出其生成方法,同时现有的所有检测方法也只是给出了一些必要而非充分的条件。
因此,随机数的生成及其性能检测方法,都有待于进一步的研究。
具体的应用环境不同,对随机数发生器的性能要求就不一样,而不同的随机数发生器产生的随机数的性质必然不一样。
为了能对一个随机数发生器的性能做一个比较全面和客观的评价,需要对不同的测试方法进行研究,讨论其测试目的和测试依据。
本课题主要是讨论随机数生成法,随机数生成法比较以及随机数的检测统计,从上面分析看出,本课题是很有意义和开拓性的工作。
1.3课题的难点、重点、核心问题及方向本课题的核心问题是随机数生成法、随机数生成法比较以及随机数的统计检验。
本课题的主要工作内容如下:(1)介绍几种常见的随机数生成法,并比较了各种随机数生成法的优劣;(2)1电子科技大学学士学位论文介绍统计检验的理论,并对几种随机数生成法进行了统计检验;(3)介绍新的随机数生成法,并对随机数进行统计检验。
2第2章 随机数3第2章 随机数在用计算机的教学与学习中,经常需要用到随机数,比如,数据结构中关于一个数据的存储地址,在各种程序设计语言学习中遇到的随机量的生成,图像处理中遇到的随机色彩的选择等,不胜枚举,随机数在计算机的应用中就显得格外重要。
尤其在仿真等领域对随机数的产生提出了更较高的要求,仅仅使用C 语言类库中的随机函数已难以胜任相应的工作。
现实中,用投色子计数的方法产生真正的随机数,但电脑若也这样做,将会占用大量内存;虽然用噪声发生器或放射性物质也可产生真正的随机数,但操作不可重复。
而用数学方法产生随机数则最适合计算机,这就是“伪随机数”。
我们需要的随机数序列应具有非退化性,周期长,相关系数小等优点。
2.1 基本概念在密码学中,对于一个随机序列的定义如下: (1) 看起来是随机的。
(2) 这个序列是不可预测的。
(3) 这个序列是不能重复产生的。
随机变量η的抽样序列12,,,n ηηη,称为随机数列。
如果随机变量η是均匀分布的,则η的抽样序列12,,,n ηηη,称为均匀随机数列;如果随机变量η 是正态分布的随机变量则称其抽样序列为正态随机数列。
随机序列具有以下性质:(1)等分布性:随机序列的分布特性是等概分布,或称为一致分布。
即是说序列中每个元素出现的概率都是相等的。
(2)独立性:随机序列的各个元素之间是相互独立的。
(3)不可预测性:该性质可由等分布性和相互独立性推出。
(4)白噪声谱特性:由独立性可知,随机序列的自相关函数为δ函数。
2.2 产生随机数的一般方法随机数产生方法的研究己经有很长的历史,至今仍有统计学者继续研究随机数产生的方法和理论。
产生随机数的一般方法:(1)手工方法:这是随机数产生的最早方法,即采用抽签、掷筛子、抽牌、摇号或从搅乱的罐子中取带数字的球等方法。
(2)随机数表方法:Monte-Carlo 方法的出现,需要大量的随机数,显然用手工的方法不能满足模拟计算的需要。
1927年Tipett 造出了具有4万个随机数字的表;1939电子科技大学学士学位论文4年Kendell 和Babington-Smith 用高速转盘建立了有+万个数字的随机数表;兰德(Rand)公司利用电子装置产生了含有一百万个数字的随机数表。
在电子计算机产生之前人们就是利用这些随机数表进行统计模拟计算。
(3)物理方法:随着计算机和模拟方法的广泛应用,用计算机产生随机数成为新的课题。
在计算机上安装一台物理随机数发生器,把具有随机性质的物理过程变换为随机数,使用物理随机数发生器在计算机上可以得到真正的随机数,随机性和均匀性都是很好的,而且是取之不尽用之不竭的。
但是此方法也有一些缺点,其中最重要的是我们不能产生同原来完全相同的随机数,对计算结果不能进行复算检查;加上物理随机数发生器的稳定性经常需要进行检查和维修,因而大大降低了这种方法的使用价值。
(4)数学方法:它是利用数学递推公式来产生随机数的;它是目前使用最广泛、发展很快的一类方法;它的特点是占用内存少、速度快又便于计算。
本文主要是介绍用数学方法来产生随机数的算法,即各种各样的随机数发生器。
2.3 随机数生成的数学方法用数学方法产生随机数,就是利用计算机能直接进行算术运算或逻辑运算的特点,选取一个适宜的数学递推公式1(,,)n m n n m r f r r ++-=,利用计算程序,按递推公式对数字进行加工处理,把10,1,,m b -或其部分数字的自然顺序打乱,产生具有均匀总体、简单子样统计性质的随机数,这里一般m 取较小的正整数,b 为机器的字长。
用数学方法产生的随机数的速度快,占用内存少,对模拟的问题可以进行复算检查,一般还有较好的统计性质.但是,由于计算机只能表示有限位不同的数,严格说,在计算机上不能产生真正连续分布的随机数,只能产生离散分布的随机数来代替连续分布的随机数.另外,计算机上用数学方法产生随机数,是根据确定的算法推算出来的,因此严格说来,用数学方法在计算机上产生的“随机数”不能说是真正的随机数,故一般称之为“伪随机数”。