- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
随机算及法简单介绍
随机算法;随机算法起源可以追溯到20世纪40年代中叶。?当时Monte?Carlo在进行数值计算时,?提出通过统计模拟或抽样得到问题的近似解,?而且出现错误的概率随着实验次数的增多而显著地减少,?即可以用时间来换取求解正确性的提高。;设有一含有n个未知量的函数表达式f(x1,x2….xn), 要判断f在某一区域D中是否恒为0。
通常做法:将f进行数学化简后在进行判断。。。
但是!!
如果f不可以进行数学化简呢???
Ps:f不能化简在实际情况中是很可能出现的。。。;如果我们随机地产生一个n维的坐标
(r1,r2…. rn) 属于 D, 代入f得f(r1,r2….. rn)≠0,则可断定在区域D内f?0。 如果f(r1,r2,? rn)=0,则有两种可能:
1.在区域D内f≡0
2.在区域D内f?0,得到上述结果只是巧合。;如果我们对很多个随机产生的坐标进行测试,结果次次均为0,?我们就可以断言f?0的概率是非常之小的。
在随机算法中不要求对同一输入算法每次执行时给出相同的结果。 我们所关心的是算法在执行时,是否能够产生真正随机的结果。最后将这些随机结果进行分析,得出结论。;1)Random?Sampling问题
?设给定n个元素(为简单起见,设为1,2……n),?要求从n个数中随机地选取m个数(m?n)。
常规解法:
用一个长为m的数组,来存放产生的随机数。产生一个数后,看其是否在数组中: 若不在则将其加入,若已在则抛弃该数,再去产生下一个数。
;优化:建立一个长度为n的数组用下标i代表数字,b[i]中来标记是否被选过。。。
;大家是否还记得上一次我们小组的小组作业??
水王问题。。。
最后我们的组长有延伸这道题目。。。就是当发帖数目太大,大到无法记录的时候怎么办??
于是组长大人想到了一个好办法,随机取出一部分,计算出其中的水王,反复进行多次,选错水王的概率就会越来越低。
这其实就是随机算法。
那么又如何随机的选出一部分呢??;通过例子和例题可以看出,这些解法都有一个共同点。。。
就是都包含随机数的生成。。。
在机械工业出版社出版的《算法导论》中有很好很强大的概括:;随机算法就是包含随机数生成器的算法。
;
很好理??能生成随机数的就是随机数生成器呗。。。
但是,重点不在这里。。。。
那重点是什么??
;数学上是这样定义随机数的:在连续型随机变量的分布中,最简单而且最基本的分布是单位均匀分布。由该分布抽取的简单子样称为随机数序列,其中每一个体称为随机数。
;其实没那么 复杂。。。
;;在用随机算法解决问题时,都会要求随机的产生一些数,那产生随机数很难吗??
按照随机数的产生方式,随机数列可以分为两类:真随机数列和伪随机数列。;
1)伪随机数序列
伪随机数序列由数学公式计算所产生。实质上,伪随机数并不随机,序列本身也必然会重复,但由于它可以通过不同的设计产生满足不同要求的序列且可以复现因而得到广泛的应用。
2)真随机数列
利用物理方法选取自然随机性产生的随机数可以看作真随机数。;目前已经出现了多种随机数生产生方法,主要有以下三种?
1.人工方法?通过拋硬币、扔骰子等方法获得随机序列。由这类方法产生的随机序列具有高度的随机性,但是这种方法效率极低。;?2.利用计算机生成伪随机数?这是最常见的随机序列产生方法,它是基于“随即种子”产生的。由计算机算法来获得的随机序列是有规律可循的,所以其安全性较差。;3.通过检测随机噪声源来获取真随机数?产生真随机数需要熵源即随机源,目前熵源一般是通过检测放射性衰变、粒子轨迹、电子电路噪声、大气噪声、机械振动噪声、电子振荡器频率抖动等物理噪声来获取的。
;随机算法关键显而易见。。。。
如何用计算机产生伪随机数~~~;随机数在计算机生成中通常都是用迭代算法
通过将n带入迭代公式计算出n+1;
那迭代公式如何确定??
;是由冯·诺依曼提出的。它的实现方法为:首先任取一个非0的2m位的数,用它中间的m位数码作为所生成的伪随机序列的第一个元素,然后将该数做平方运算,得到一个新的2m位的数,取其中间m位作为伪随机序列的第二个元素,依次进行。当取十进制时,用公式可表示为:;这种方法比较容易实现,但是它的周期受初始值的影响很大,初始值选得不好,会严重影响随机数序列的质量和周期。
而且存在周期退化问题,这种平方取中法并不是生成伪随机序列的好方法。它的缺点在于这样产生的序列中很容易出现重复元素的短循环,而且,一旦某一个元素是0,则后面所有的元素都将是0;在伪随机数的产生方式中最常见的就是线性同余法,生成公式:
其中: m,模数;m0
a, 乘数;0 ≤a m
c, 增量;0 ≤c m
X0,初始值,种子;0 ≤
文档评论(0)