- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值计算方法
—— 伪随机数生成算法及其应用
张 勇
中山大学理工学院
zhyong9@mail.sysu.edu.cn
每个C/C++编译器,Fortran编译器,都会
提供伪随机数生成器。难道还有必要来了
解算法,自己来写伪随机数生成器?
本章安排:
? 一个具体的例子
? 历史回顾
? 什么是伪随机数,伪随机数的检验
? 线性同余法
? 一些新的算法
? 使用伪随机数来解决问题(几个例子)
考虑一个粒子(红色小球),它可以在两条
轨道上运动。粒子受到一个随机力的影响,
使得它可以随机地跳跃到原轨道附近的地
方,两条轨道都是稳定的。
Y. Zhang, et. al., New J. Phys. 10 (103018) 2008
定性分析
1. 粒子受到随机力的
干扰,会偏离原轨道
2. 轨道是稳定的,粒
子偏离之后会回到原
轨道
3. 两轨道离得比较近,
在阴影部分粒子发生
偏离的话有可能进入
另外一条轨道
4. 如果一开始放入大
量粒子,那么应到看
到下图(用两个表示)
采用数值计算,
随机力以线性同
余法伪随机数生
产算法产生。
结果所能得到的
结果不是下图,
而是左上图。
为什么会出现上
边的结果?
在更换一种更现
代的伪随机数生
产算法之后,得
到了如有图所示
的结果
随机数可以通过物理的方式来获得:
观察原子衰变;
电路中的噪声;
观察通过一个半透半反镜面的光子;
大气噪声
... ...
但是,目前普遍采用的生成“随机数”的方
式是使用计算机来计算出来的
设计一个好的伪随机数生成器是非常困难
的,最好由专家来完成
—— Robert R. Coveyou
人们习惯于不去研究这样的(伪随机数)子
程序,某些让人相当不满意的老方法被盲
目地从一个程序员传到另一个程序员,以
至于使用的人对它的局限性一无所知
—— D. E. Knuth
内部状态
{S1,S2, ... SN}
输入
输出
计算机生成伪随机数的示意图
算
法
内部状态数是有限的
对这个示意图的分析可以发现如下一些问
题:1. 算法是确定性的,生成的结果为什
么叫做“随机数”,随机数是什么意思?2.
输入(种子)怎么选择?3. 内部状态数是有
限的,那么输出会出现循环(周期性)
1946年,von Neumann提出了平方取中
法:把输入的数字求平方,然后再把平
方之后的中间部分作为输出
例如:(输入) 394157 → (平方)
155359740649 → (输出) 359740
这一算法已经被证明有严重的缺陷,现在
已经不再使用该方法。
在这里,我们用它来演示伪随机数生成算
法中的一些问题
第一个问题是:要选择一个好的输入,
即种子,并不容易
第二个问题是:伪随机数的生成算法输
出的伪随机数具有周期性。所谓的周期
是指伪随机数生成算法输出的数字在出
现重复之前已输出的数字的个数。平方
取中法的周期一般很短,之后就会退化
成为较短的重复数字序列。
周期性的长短是评价一个伪随机数生成算
法好坏的指标之一。在实际使用中(比如蒙
特卡洛模拟),往往需要生成大量独立样本,
所以往往要求伪随机数算法的周期比较长。
同时也希望算法的复杂性(时间复杂性和空
间复杂性)尽可能低。
算法是确定性的,所以生成的数字不叫
随机数,而是叫着伪随机数。先通过6位
十进制数的平方取中法的实例来了解下
前面所提到的两个问题
628 217000
629 89000
630 921000
631 241000
632 81000
633 561000
634 721000
635 841000
636 281000
637 961000
638 521000
639 441000
640 481000
641 361000
642 321000
643 41000
644 681000
645 761000
646 121000
647 641000
648 881000
649 161000
650 921000
seed =
394159
611 930438
612 714871
613 40546
614 643978
615 707664
616 788336
617 473648
618 342427
619
您可能关注的文档
- 实验二 心脏的形态结构观察.ppt
- 世界500强情景模拟面试题.doc
- 市场营销工作指引-OTA.ppt
- 市场营销调研教学资料 2014chapter14.ppt
- 数值计算方法-张勇 interpo.pdf
- 数据库系统原理课程设计 需求分析.ppt
- 数值计算方法-张勇 Introduction.pdf
- 数字电路与逻辑设计教学 6.7 VerilogHDL在时序电路的设计.pdf
- 数字电路与逻辑设计教学 ch01.ppt
- 数字电路与逻辑设计教学 ch02.ppt
- 2022年辽宁省营口市社会工作者职业资格社会工作综合能力(初级)预测试题(含答案).docx
- 海南省三亚市社会工作者职业资格社会工作综合能力(初级)专项练习(含答案).docx
- 河南省南阳市注册会计财务成本管理模拟考试(含答案).docx
- 广东省东莞市社会工作者职业资格社会工作综合能力(初级)知识点汇总(含答案).docx
- 2022-2023年山东省聊城市导游资格全国导游基础知识专项练习(含答案).docx
- 福建省南平市导游资格全国导游基础知识知识点汇总(含答案).docx
- 四川省泸州市导游资格全国导游基础知识知识点汇总(含答案).docx
- 2022-2023年江苏省常州市导游资格导游业务.docx
- 河南省开封市导游资格导游业务知识点汇总(含答案).docx
- 黑龙江省黑河市社会工作者职业资格社会工作综合能力(初级)重点汇总(含答案).docx
文档评论(0)