您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > MATLAB伪随机数发生器
MATLAB伪随机数发生器.txt生活是过出来的,不是想出来的。放得下的是曾经,放不下的是记忆。无论我在哪里,我离你都只有一转身的距离。均匀性较好的随机数生成zzfrom=3379随机数生成算法[1]是一类重要的算法,广泛应用于仿真技术等场合。然而,目前的伪随机数生成器(Pseudo-randomnumbergenerator,PRNG)[2]存在一个重要缺陷,即样本分布与真实分布不一致,这主要发生在以下两种情况:①抽样代价过高,样本数目较少;②空间维数较高[3]。因此,有必要寻找一类新的随机数发生器。准随机数发生器(Quasi-randomnumbergenerator,QRNG)[4]能够生成稳定、低差异性的(low-discrepancy)样本,而与样本数目或空间维数无关[5]。故针对蒙特卡罗积分结果不稳定的情况,提出一种基于QRNG的蒙特卡罗积分,发现比传统方法性能有所提升。伪随机数介绍伪随机数是由确定的算法生成的,其分布函数与相关性均能通过统计测试。与真实随机数的差别在于,它们是由算法产生的,而不是一个真实的随机过程。一般地,伪随机数的生成方法主要有以下3种[6]:(1)直接法(DirectMethod),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。(2)逆转法(InversionMethod),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。(3)接受拒绝法(Acceptance-RejectionMethod):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的PRNG。伪随机数生成器的缺点重复做N=10000次试验,每次产生S=20与S=100个随机分布的样本,同时采用Kolmogorov-Smirnov假设检验(hypothesistest)来确定样本是否满足均匀分布。规定:①0假设(nullhypothesis)为样本服从均匀分布;②1假设(alternativehypothesis)为样本不服从均匀分布。采用P值(∈[0,1])衡量,P值越趋近于0,表示越有理由拒绝0假设,即样本不服从均匀分布;P值越趋近于1,表示越有理由接受0假设,即样本服从均匀分布。如图1与图2所示:随着P值下降,样本也越来越不服从均匀分布。实践中希望P值越大越好。然而统计学的结论显示,P值一定服从均匀分布,与N、S大小无关,这表明由于随机性,总会出现某次抽样得到的样本不服从、甚至远离均匀分布。另外,样本大小的不同,造成检验标准的不同,直观上看S=100对应的均匀分布普遍比S=20对应的更均匀。因此,小样本情况下均匀分布PRNG的差异性尤为严重。准随机数发生器上节讨论了造成差异性的两个情况:小样本与高维空间。本节讨论如何构建一类新的随机数发生器,使其具有较低的差异性。PRNG缺陷的根源在于“随机性”与“均匀性”的矛盾。因此,不要求新的发生器模拟真实的均匀分布,而力求任意大小的样本(尤其是小样本)都能满足低差异性。换言之,以牺牲随机性为代价,换来均匀性的提高,称其为准随机数发生器(QRNG)。均匀分布QRNG的优势在于,其生成的样本更趋于均匀分布。在其基础上构建的各类分布(包括高斯分布)的QRNG,其生成的样本也更趋于服从对应的分布。目前有3种准随机序列(Quasi-randomsequency)可用来辅助生成均匀分布随机数,分别是Halton序列、Sobol序列、Latin超立方体序列。的方法:qrandstream-Class:qrandstreamConstructquasi-randomnumberstreamSyntaxq=qrandstream(type,d)q=qrandstream(type,d,prop1,val1,prop2,val2,...)q=qrandstream(p)Descriptionq=qrandstream(type,d)constructsad-dimensionalquasi-randomnumberstreamqoftheqrandstreamclass,oftypespecifiedbythestringtype.typeiseither'halton'or'sobol',andqisbasedonapointsetfromeitherthehaltonsetclassorsobolsetclass,respectively,withdefaultpropertysettings.q=qrandstream(type,d,prop1,val1,prop2,val2,...)specifiespropertyname/valuepairsforthepointsetonwhichthestreamisbased.Applicablepropertiesdependontype.q=qrandstream(p)constructsastreambasedonthespecifiedpointsetp.pmustbeapointsetfromeitherthehaltonsetclassorsobolsetclass.ExamplesConstructa3-DHaltonstream,basedonapointsetthatskipsthefirst1000valuesandthenretainsevery101stpoint:q=qrandstream('halton',3,'Skip',1e3,'Leap',1e2)q=Haltonquasi-randomstreamin3dimensionsPointsetproperties:Skip:1000Leap:100ScrambleMethod:nonenextIdx=q.StatenextIdx=1Useqrandtogeneratetwosamplesofsizefour:X1=qrand(q,4)X1=0.09280.34750.00510.69580.20350.23710.30130.84960.43070.90870.56290.6166nextIdx=q.StatenextIdx=5X2=qrand(q,4)X2=0.24460.02380.81020.52980.75400.04380.38430.51120.27580.83350.22450.4694nextIdx=q.StatenextIdx=9Useresettoresetthestream,andthengenerateanothersample:reset(q)nextIdx=q.StatenextIdx=1X=qrand(q,4)X=0.09280.34750.00510.69580.20350.23710.30130.84960.43070.90870.56290.6166SeeAlsohaltonset|qrand|reset|sobolset类别:默认分类||添加到搜藏|分享到i贴吧|浏览(274)|评论(0)上一篇:zz关于交叉验证最近读者:网友评论:发表评论:姓名:habby1985内容:插入表情同时将此文章分享给好友验证码:请点击后输入四位验证码,字母不区分大小写?2011Baidu
本文标题:MATLAB伪随机数发生器
链接地址:https://www.777doc.com/doc-3967271 .html