全球旧事资料 分类
随机数生成及其在统计模拟中的应用
黄湘云
关键词:随机数统计检验模拟审稿:郎大为、边蓓蕾;编辑:吴佳萍揭秘统计软件如R,Octave,Matlab等使用的随机数发生器,然后做一些统计检验,再将其应用到独立随机变量和的模拟中,最后与符号计算得到的精确结果比较。除特别说明外,文中涉及到的随机数都是指伪随机数,发生器都是指随机数发生器。
背景
随机数的产生和检验方法是蒙特卡罗方法的重要部分,另外两个是概率分布抽样方法和降低方差提高效率方法。在20世纪40年代中期,当时为了原子弹的研制,乌拉姆(SUlam)、冯诺依曼(Jvo
Neuma
)和梅特罗波利斯(NMetropolis)在美国核武器研究实验室创立蒙特卡罗方法。当时出于保密的需要,与随机模拟相关的技术就代号“蒙特卡罗”。早期取得的成果有产生随机数的平方取中方法,取舍算法和逆变换法等。这两个算法的内容见统计之都王夜笙的文章。
随机数生成
讲随机数发生器,不得不提及一个名为Merse
eTwister(简称MT)的发生器,它的周期长达
2199371,现在是R、Octave和Matlab等软件(较新版本)
的默认随机数发生器。Matlab通过内置的r
g函数指定不同的发生器,其中包括1995年Matlab采用GeorgeMarsaglia在1991年提出的借位减(subtractwithborrow,简称SWB)发生器。在Matlab中,设置如下命令可指定发生器及其状态,其中1234是随机数种子,指定发生器的状态,目的是重复实验结果,v5u
iform是发生器的名字。r
g1234v5u
iformOctave通过内置的ra
d函数指定发生器的不同状态,为获取相同的两组随机数,state参数得设置一样,如1234(你也可以设置为别的值)。Octave已经放弃了老版本内置的发生器,找不到命令去指定早期的发生器,这个和Matlab不一样。ra
dstate1234ra
d15
f09664535
04407326
00074915
09109760
09392690
ra
dstate1234ra
d150966453504407326000749150910976009392690
Pytho

umpy模块也采用MT发生器,类似地,通过如下方式获得相同的两组随机数import
umpyas
pa
pra
domRa
domState1234ara
d5array019151945062210877077997581a
pra
domRa
domState1234ara
d5array019151945062210877077997581
043772774
078535858
043772774
078535858
R的默认发生器也是MT发生器,除了设置随机数种子的seed参数,还可以通过ki
d参数指定其他发生器,
ormalki
d参数指定产生正态分布随机数的发生器,下面也使用类似的方式产生两组完全一样的随机数。setseedseedki
dNULL
ormalki
dNULLsetseed1234ki
d
好听全球资料 返回顶部