MATLAB伪随机数发生器

合集下载

MATLAB产生各种分布的随机数

MATLAB产生各种分布的随机数

M A T L A B产生各种分布的随机数The final revision was on November 23, 2020MATLAB产生各种分布的随机数1,均匀分布U(a,b):产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b)2,0-1分布U(0,1)产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n)产生一个[0,1]均匀分布的随机数:rand4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn)即产生mm*nn均值为N*P的矩阵binornd(N,p)则产生一个。

而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。

5,产生m*n阶离散均匀分布的随机数矩阵:unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵6,产生mm nn阶期望值为的指数分布的随机数矩阵:exprnd( ,mm, nn)此外,常用逆累积分布函数表函数名调用格式函数注释norminv X=norminv(P,mu,sigma) 正态逆累积分布函数expinv X=expinv(P,mu) 指数逆累积分布函数weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数Betainv X=betainv(P,A,B) β分布逆累积分布函数随机数的产生4.1.1 二项分布的随机数据的产生命令参数为N,P的二项随机数据函数 binornd格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。

R = binornd(N,P,m) %m指定随机数的个数,与R同维数。

matlab中的rng函数

matlab中的rng函数

matlab中的rng函数⼀、matlab中的随机函数有:rand、randn1、rand功能:⽣成0-1之间的伪随机数rand(2)%⽣成0-1之间的⽅阵ans =0.2785 0.95750.5469 0.9649rand(1,2)%⽣成1⾏2列的矩阵ans =0.1576 0.9706rand(1,2,'double')%⽣成1⾏2列的类型为double的随机数ans =0.9572 0.4854 2、randn功能:⽣成标准正态分布的伪随机数(均值为0,⽅差为1)使⽤的例⼦和上⾯⼀样⼆、rng函数的功能:控制随机函数的⽣成2.1⽤法⼀:rng(seed)rng(seed) 使⽤⾮负整数 seed 为随机数⽣成器提供种⼦,以使、和⽣成可预测的数字序列。

(seed⽤来控制rand和randn函数⽣成随机数,例如rand('seed',0)每次⽣成的随机数都是⼀样的)将当前⽣成器设置保存在 s 中:s = rng;调⽤ rand 以⽣成随机值向量:x = rand(1,5)x =0.8147 0.9058 0.1270 0.9134 0.6324通过调⽤ rng 还原原始⽣成器设置。

⽣成⼀组新的随机值并验证 x 和 y 是否相等:rng(s);y = rand(1,5)y =0.8147 0.9058 0.1270 0.9134 0.63242.2⽤法⼆:rng('shuffle') 根据当前时间为随机数⽣成器提供种⼦。

这样,rand、randi 和 randn 会在您每次调⽤ rng 时⽣成不同的数字序列。

2.3⽤法三:rng(seed,generator)、rng('shuffle',generator)制定随机数⽣成的类型,因为我们使⽤的是算法来⽣成随机数的,故指定的便是算法的类型'twister':梅森旋转'simdTwister':⾯向 SIMD 的快速梅森旋转算法'combRecursive':组合多递归'philox':执⾏ 10 轮的 Philox 4×32 ⽣成器'threefry':执⾏ 20 轮的 Threefry 4×64 ⽣成器'multFibonacci':乘法滞后 Fibonacci'v5uniform':传统 MATLAB® 5.0 均匀⽣成器'v5normal':传统 MATLAB 5.0 正常⽣成器'v4':传统 MATLAB 4.0 ⽣成器2.4⽤法四:rng('default')rng('default') 将 rand、randi 和 randn 使⽤的随机数⽣成器的设置重置为其默认值。

随机信号分析实验报告(基于MATLAB语言)

随机信号分析实验报告(基于MATLAB语言)

随机信号分析实验报告——基于MATLAB语言姓名:_班级:_学号:专业:目录实验一随机序列的产生及数字特征估计 (2)实验目的 (2)实验原理 (2)实验内容及实验结果 (3)实验小结 (6)实验二随机过程的模拟与数字特征 (7)实验目的 (7)实验原理 (7)实验内容及实验结果 (8)实验小结 (11)实验三随机过程通过线性系统的分析 (12)实验目的 (12)实验原理 (12)实验内容及实验结果 (13)实验小结 (17)实验四窄带随机过程的产生及其性能测试 (18)实验目的 (18)实验原理 (18)实验内容及实验结果 (18)实验小结 (23)实验总结 (23)实验一随机序列的产生及数字特征估计实验目的1.学习和掌握随机数的产生方法。

2.实现随机序列的数字特征估计。

实验原理1.随机数的产生随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。

进行随机信号仿真分析时,需要模拟产生各种分布的随机数。

在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。

伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。

伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。

(0,1)均匀分布随机数是最最基本、最简单的随机数。

(0,1)均匀分布指的是在[0,1]区间上的均匀分布, U(0,1)。

即实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:,序列为产生的(0,1)均匀分布随机数。

定理1.1若随机变量X 具有连续分布函数,而R 为(0,1)均匀分布随机变量,则有2.MATLAB中产生随机序列的函数(1)(0,1)均匀分布的随机序列函数:rand用法:x = rand(m,n)功能:产生m×n 的均匀分布随机数矩阵。

(2)正态分布的随机序列函数:randn用法:x = randn(m,n)功能:产生m×n 的标准正态分布随机数矩阵。

伪随机序列发生器

伪随机序列发生器

伪随机序列发生器一、实验目的:理解伪随机序列发生器的工作原理以及实现方法,掌握MATLAB\DSP BUILDER设计的基本步骤和方法。

二、实验条件:1. 安装WindowsXP系统的PC机;2. 安装QuartusII6.0 EDA软件;的序列发生器,并通⒈ ⒉ ⒊⒋⒌⒍⒎⒏⒐ ⒑ ⒒⒓⒔⒕⒖⒗四、实验原理:对于数字信号传输系统,传送的数字基带信号(一般是一个数字序列),由于载有信息,在时间上往往是不平均的(比如数字化的语音信号),对应的数字序列编码的特性,不利于数字信号的传输。

对此,可以通过对数字基带信号预先进行“随机化”(加扰)处理,使得信号频谱在通带内平均化,改善数字信号的传输;然后在接受端进行解扰操作,恢复到原来的信号。

伪随机序列广泛应用与这类加扰与解扰操作中。

我们下面用DSP BUILDER来构建一中伪随机序列发生器——m序列发生器,这是一种很常见的伪随机序列发生器,可以由线性反馈器件来产生,如下图:其特征多项式为:()∑==ni i i x C x F 0注:其中的乘法和加法运算都是模二运算,即逻辑与和逻辑或。

可以证明,对于一个n 次多项式,与其对应的随机序列的周期为。

12−n 接下来我们以为例,利用DSP BUILDER 构建这样一个伪随机序列发生器。

125++x x开Simulink 浏览器。

Simulink我们可以看到在Simulink 工作库中所安装的Altera DSP Builder 库。

2. 点击Simulink 的菜单File\New\Model 菜单项,新建一个空的模型文件。

3. 按照下图在Model编辑器的工作区中放置如下的模型:其中Logical Bit Operator模块在Gate & Control库中,把它拖到工作区中后双击打开参数设置对话框,设置成2输入异或门。

为了能够在Matlab中获得仿真结果,可以给输出再添加一个示波器Scope,这个模型在Simulink标准库的Sources库中。

MATLAB产生各种分布的随机数

MATLAB产生各种分布的随机数

MATLAB产生各种分布的随机数1,均匀分布Ua,b:产生mn阶a,b均匀分布Ua,b的随机数矩阵:unifrnd a,b,m, n产生一个a,b均匀分布的随机数:unifrnd a,b2,0-1分布U0,1产生mn阶0,1均匀分布的随机数矩阵:rand m, n产生一个0,1均匀分布的随机数:rand4,二类分布binorndN,P,mm,nn如binornd10,,mm,nn即产生mmnn均值为NP的矩阵binorndN,p则产生一个;而binornd10,,mm则产生mmmm的方阵,军阵为Np; 5,产生mn阶离散均匀分布的随机数矩阵:unidrndN,mm,nn产生一个数值在1-N区间的mmnn矩阵6,产生mm nn阶期望值为的指数分布的随机数矩阵:exprnd ,mm, nn此外,常用逆累积分布函数表函数名调用格式函数注释norminv X=norminvP,mu,sigma 正态逆累积分布函数expinv X=expinvP,mu 指数逆累积分布函数weibinv X=weibinvP,A,B 威布尔逆累积分布函数logninv X=logninvP,mu,sigma 对数正态逆累积分布函数Chi2inv X=chi2invP,A,B 卡方逆累积分布函数Betainv X=betainvP,A,B β分布逆累积分布函数随机数的产生4.1.1 二项分布的随机数据的产生命令参数为N,P的二项随机数据函数 binornd格式 R = binorndN,P %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同;R = binorndN,P,m %m指定随机数的个数,与R同维数;R = binorndN,P,m,n %m,n分别表示R的行数和列数例4-1>> R=binornd10,R =3>> R=binornd10,,1,6R =8 1 3 7 6 4>> R=binornd10,,1,10R =6 8 4 67 5 3 5 6 2>> R=binornd10,,2,3R =7 5 86 5 6>>n = 10:10:60;>>r1 = binorndn,1./nr1 =2 1 0 1 1 2>>r2 = binorndn,1./n,1 6r2 =0 1 2 1 3 14.1.2 正态分布的随机数据的产生命令参数为μ、σ的正态分布的随机数据函数 normrnd格式 R = normrndMU,SIGMA %返回均值为MU,标准差为SIGMA的正态分布的随机数据,R可以是向量或矩阵;R = normrndMU,SIGMA,m %m指定随机数的个数,与R同维数;R = normrndMU,SIGMA,m,n %m,n分别表示R的行数和列数例4-2>>n1 = normrnd1:6,1./1:6n1 =>>n2 = normrnd0,1,1 5n2 =>>n3 = normrnd1 2 3;4 5 6,,2,3 %mu为均值矩阵n3 =>> R=normrnd10,,2,3 %mu为10,sigma为的2行3列个正态随机数R =4.1.3常见分布的随机数产生常见分布的随机数的使用格式与上面相同表4-1随机数产生函数表函数名调用形式注释UnifrndunifrndA,B,m,nA,B上均匀分布连续随机数UnidrndunidrndN,m,n均匀分布离散随机数Exprnd exprndLambda,m,n参数为Lambda的指数分布随机数NormrndnormrndMU,SIGMA,m,n参数为MU,SIGMA的正态分布随机数chi2rndchi2rndN,m,n自由度为N的卡方分布随机数TrndtrndN,m,n自由度为N 的t分布随机数Frnd frndN1, N2,m,n 第一自由度为N1,第二自由度为N2的F分布随机数gamrnd gamrndA, B,m,n 参数为A,B的分布随机数betarnd betarndA, B,m,n参数为A,B的分布随机数lognrndlognrndMU,SIGMA,m,n参数为MU,SIGMA的对数正态分布随机数nbinrndnbinrndR,P,m,n参数为R,P的负二项式分布随机数ncfrndncfrndN1,N2,delta,m,n参数为N1,N2,delta的非中心F分布随机数nctrndnctrndN,delta,m,n参数为N,delta的非中心t分布随机数ncx2rndncx2rndN,delta,m,n参数为N,delta的非中心卡方分布随机数raylrndraylrndB,m,n参数为B的瑞利分布随机数weibrndweibrndA,B,m,n参数为A,B的韦伯分布随机数binorndbinorndN,P,m,n参数为N,p的二项分布随机数georndgeorndP,m,n参数为p的几何分布随机数hygerndhygerndM,K,N,m,n参数为M,K,N的超几何分布随机数Poissrnd poissrndLambda,m,n参数为Lambda的泊松分布随机数4.1.4通用函数求各分布的随机数据命令求指定分布的随机数函数randomvar cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120136格式y=random'name',A1,A2,A3,m,n%name的取值见表4-2;A1,A2,A3为分布的参数;m,n指定随机数的行和列例4-3产生123行4列个均值为2,标准差为的正态分布随机数>> y=random'norm',2,,3,4 y =随机变量的概率密度计算4.2.1 通用函数计算概率密度函数值命令通用函数计算概率密度函数值函数pdf格式Y=pdfname,K,AY=pdfname,K,A,B Y=pdfname,K,A,B,C说明返回在X=K处、参数为A、B、C的概率密度值,对于不同的分布,参数个数是不同;name为分布函数名,其取值如表4-2;表4-2 常见分布函数表name的取值函数说明'beta' 或'Beta' Beta分布'bino' 或'Binomial' 二项分布'chi2' 或'Chisquare' 卡方分布'exp' 或'Exponential' 指数分布'f' 或'F'F分布'gam' 或'Gamma' GAMMA分布'geo' 或'Geometric'几何分布'hyge' 或'Hypergeometric' 超几何分布'logn' 或'Lognormal'对数正态分布'nbin' 或'Negative Binomial' 负二项式分布'ncf' 或'Noncentral F' 非中心F分布'nct' 或'Noncentral t'非中心t分布'ncx2' 或'Noncentral Chi-square' 非中心卡方分布'norm' 或'Normal' 正态分布'poiss' 或'Poisson' 泊松分布'rayl' 或'Rayleigh' 瑞利分布't' 或'T'T分布'unif' 或'Uniform'均匀分布'unid' 或'Discrete Uniform' 离散均匀分布'weib'或'Weibull'Weibull分布例如二项分布:设一次试验,事件A发生的概率为p,那么,在n次独立重复试验中,事件A恰好发生K次的概率P_K为:P_K=P{X=K}=pdf'bino',K,n,p例4-4 计算正态分布N0,1的随机变量X在点的密度函数值;Matlab 的随机函数高斯分布均匀分布其它分布Matlab中随机数生成器主要有:betarnd 贝塔分布的随机数生成器binornd 二项分布的随机数生成器chi2rnd 卡方分布的随机数生成器exprnd 指数分布的随机数生成器frnd f分布的随机数生成器gamrnd 伽玛分布的随机数生成器geornd 几何分布的随机数生成器hygernd 超几何分布的随机数生成器lognrnd 对数正态分布的随机数生成器nbinrnd 负二项分布的随机数生成器ncfrnd 非中心f分布的随机数生成器nctrnd 非中心t分布的随机数生成器ncx2rnd 非中心卡方分布的随机数生成器normrnd 正态高斯分布的随机数生成器,normrnda,b,c,d:产生均值为a、方差为b大小为cXd的随机矩阵poissrnd 泊松分布的随机数生成器rand:产生均值为、幅度在0~1之间的伪随机数,randn:生成0到1之间的n阶随机数方阵,randm,n:生成0到1之间的m×n的随机数矩阵randn:产生均值为0、方差为1的高斯白噪声,使用方式同rand注:rand是0-1的均匀分布,randn是均值为0方差为1的正态分布randpermn:产生1到n的均匀分布随机序列raylrnd 瑞利分布的随机数生成器trnd 学生氏t分布的随机数生成器unidrnd 离散均匀分布的随机数生成器unifrnd 连续均匀分布的随机数生成器weibrnd 威布尔分布的随机数生成器以下介绍利用Matlab产生均值为0,方差为1的符合正态分布的高斯随机数;我们利用的函数为normrnda,b,c,d:产生均值为a、标准为b大小为cXd的随机矩阵,它有如下三种参数形式:R=normrndμ,σR=normrndμ,σ:生成服从正态分布μ参数代表均值,σ参数代表标准差的随机数;输入的向量或矩阵μ和σ必须形式相同,输出R也和它们形式相同;标量输入将被扩展成和其它输入具有相同维数的矩阵;R=normrndμ,σ,mR=norrmrndμ,σ,m:生成服从正态分布μ参数代表均值,σ参数代表标准差的随机数矩阵,矩阵的形式由m定义;m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数;R=normrndμ,σ,m,nR=normrndμ,σ,m,n:生成m×n形式的正态分布的随机数矩阵;其中μ为均值,σ为标准方差,m、n为矩阵大小;----------------------------------------------------------------->> R = normrnd0,1,4,4 %产生4×4的标准正态分布矩阵R =>> varR %默认方差公式ans =>> varR,0 %默认方差公式N-1ans =>> varR,1 %方差公式Nans =>> varR,0,1 %列操作,第二参数为方差方式,第三参数为行、列标记ans =>> varR,0,2 %行操作,第二参数为方差方式,第三参数为行、列标记ans =>> varR' %check the ansans =>> varR: %矩阵所有元素的方差ans =。

matlab中用rng替换rand(seed,sd)、randn(seed,sd)和ran。。。

matlab中用rng替换rand(seed,sd)、randn(seed,sd)和ran。。。

matlab中⽤rng替换rand(seed,sd)、randn(seed,sd)和ran。

1. rand('seed',sd)、randn('seed',sd)和rand('state',sd)中各参数的含义我们知道,rand和randn都是⽤来产⽣伪随机数的,但是产⽣伪随机数的generator(发⽣器)有多种,⽽seed、state、twister等就是⽤来指定不同类型的伪随机数发⽣器的,其中seed 指“v4 generator”,state指“v5 generator”,twister指"Mersenne Twister generator"。

第⼆个参数“sd”是“seed”的缩写,表⽰发⽣器的种⼦点,这个值将作为generator的输⼊,⽤于产⽣伪随机数。

这⾥有必要先解释⼀下随机数和伪随机数的本质区别:随机数是在某次产⽣过程中,按照实验过程中表现的分布概率随机产⽣的,其结果是不可预测的,不可重复的;⽽伪随机数则是按照⼀定算法模拟产⽣的,其结果是确定的,可重复的。

当然这⾥的确定和可重复是指给定相同的初始值,算法模拟将产⽣相同的输出。

2. 为什么要⽤rand('seed',sd)、randn('seed',sd)和rand('state',sd)在实际应⽤中,⽐如检查程序问题时,为了重现错误,我们可能希望产⽣相同的伪随机数,这个时候就需要⽤这些表达式了。

正如前⾯所说的,如果选⽤相同的generator并设置相同的初始值sd,那么你就可以得到同样伪随机数。

举个例⼦:rand('seed',0); %选定generator并设定初始值a=rand(3,3);rand('seed',0);%设定同样的generator和相同的初始值b=rand(3,3);ab输出:a =0.218959186328090 0.679296405836612 0.5194163720679550.047044616214486 0.934692895940828 0.8309653461123660.678864716868319 0.383502077489859 0.034572110527461b =0.218959186328090 0.679296405836612 0.5194163720679550.047044616214486 0.934692895940828 0.8309653461123660.678864716868319 0.383502077489859 0.034572110527461对⽐后你会发现a和b相等。

matlab中randn(‘state’)

matlab中randn(‘state’)

matlab中randn(‘state’)randn('state')随机数都是由RandStream随机数据流⽣成的(⾥⾯有⼀套固定的算法,⼀般⽤时间发⽣装置)。

其中就有'state','seed','twister'等参数。

‘state’是对随机发⽣器的状态进⾏初始化,并且定义该状态初始值。

⽐如你过⼀段时间还要使⽤这个随机数的时候,还能保持当前的随机取值。

⽐如randn('state',2013)a = randn(1)b = randn(1) 会发现与上⼀个随机值不⼀样如果再定义⼀次randn('state',2013)c = randn(1) 会发现与a的值⼀样(1)RANDN产⽣正态分布数的语法:RANDN(N) :产⽣N× N的矩阵,其元素是按正态分布的数组;RANDN(M,N) and RANDN([M,N]):产⽣M×N的矩阵;RANDN(M,N,P,...) or RANDN([M,N,P...])产⽣随机序列;(2)RANDN产⽣伪随机数的语法:发⽣器的状态决定所产⽣数的序号。

S = RANDN('state') 是⼀个⼆元向量,包括标准发⽣器的状态;RANDN('state',S):设置发⽣器的状态为S(即标准状态);RANDN('state',0):设置发⽣器的初始状态;RANDN('state',J):J为整数,设置发⽣器到J阶状态;(3)MATlAB 4.X应⽤⼀个单独的种⼦来产⽣随机数:RANDN('seed',0) and RANDN('seed',J)作⽤与RANDN('state',0)和RANDN('state',J)⼀样,但使⽤Matlab 4.x随机数发⽣器。

matlab随机数生成方法

matlab随机数生成方法

Matlab 随机数生成方法(转自雅虎空间)第一种方法是用 random 语句,其一般形式为y = random('分布的英文名',A1,A2,A3,m,n),表示生成 m 行 n 列的m × n 个参数为 ( A1 , A2 , A3 ) 的该分布的随机数。

例如: (1) R = random('Normal',0,1,2,4): 生成期望为 0,标准差为 1 的(2 行 4 列)2× 4 个正态随机数(2) R = random('Poisson',1:6,1,6): 依次生成参数为 1 到 6 的(1 行 6 列)6 个Poisson 随机数第二种方法是针对特殊的分布的语句:一.几何分布随机数(下面的 P,m 都可以是矩阵)R = geornd(P) (生成参数为 P 的几何随机数)R = geornd(P,m) (生成参数为 P 的× m 个几何随机数)1R = geornd(P,m,n) (生成参数为 P 的 m 行 n 列的m × n 个几何随机数)例如(1) R = geornd(1./ 2.^(1:6)) ( 生成参数依次为 1/2,1/2^2,到 1/2^6 的 6 个几何随机数)(2) R = geornd,[1 5]) (生成参数为的(1行5列)5 个几何随机数).二.Beta 分布随机数R = betarnd(A,B) (生成参数为 A,B 的 Beta 随机数)R = betarnd(A,B,m) (生成× m 个数为 A,B 的 Beta 随机数)1R = betarnd(A,B,m,n) (生成 m 行 n 列的m × n 个数为 A,B 的 Beta 随机数).三.正态随机数R = normrnd(MU,SIGMA) (生成均值为 MU,标准差为 SIGMA 的正态随机数)R = normrnd(MU,SIGMA,m) (生成1× m 个正态随机数)R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的m × n 个正态随机数)例如(1) R = normrnd(0,1,[1 5]) 生成 5 个正态(0,1) 随机数(2) R = normrnd([1 2 3;4 5 6],,2,3) 生成期望依次为[1,2,3;4,5,6], 方差为的2×3 个正态随机数.四.二项随机数:类似地有R = binornd(N,P) R = binornd(N,P,m) R = binornd(N,p,m,n)例如n = 10:10:60; r1 = binornd(n,1./n) 或 r2 = binornd(n,1./n,[1 6]) (都生成参数分别为1 1 ), L, ( 60, ) 的6个二项随机数.(10,10 60五.自由度为 V 的χ 2 随机数:R = chi2rnd(V) R = chi2rnd(V R = chi2rnd(V,m) ,m,n)六.期望为 MU 的指数随机数(即 Exp 随机数):1MUR = exprnd(MU) R = exprnd(MU,m) R = exprnd(MU,m,n)七.自由度为 V1, V2 的 F 分布随机数:R = frnd(V1,V2) R = frnd(V1, V2,m) R = frnd(V1,V2,m,n)八.Γ ( A, λ ) 随机数:R = gamrnd(A,lambda) R = gamrnd(A,lambda,m) R = gamrnd(A,lambda,m,n)九.超几何分布随机数:R = hygernd(N,K,M) R = hygernd(N,K,M,m) R = hygernd(N,K,M,m,n)十.对数正态分布随机数R = lognrnd(MU,SIGMA) R = lognrnd(MU,SIGMA,m) R = lognrnd(MU,SIGMA,m,n)十一.负二项随机数:R = nbinrnd(r,p) R = nbinrnd(r,p,m) R = nbinrnd(r,p,m,n)十二.Poisson 随机数:R = poissrnd(lambda) R = poissrnd(lambda,m) R = poissrnd(lambda,m,n) 例如,以下 3 种表达有相同的含义:lambda = 2; R = poissrnd(lambda,1,10) (或 R = poissrnd(lambda,[1 10]) 或 R = poissrnd(lambda(ones(1,10)))十三.Rayleigh 随机数:R = raylrnd(B) R = raylrnd(B,m) R = raylrnd(B,m,n)十四.V 个自由度的 t 分布的随机数:R = trnd(V) R = trnd(V,m) R = trnd(V,m,n)42十五.离散的均匀随机数:R = unidrnd(N) R = unidrnd(N,m) R = unidrnd(N,m,n)十六.[A,B] 上均匀随机数R = unifrnd(A,B) R = unifrnd(A,B,m) R = unifrnd(A,B,m,n)例如 unifrnd(0,1:6)与 unifrnd(0,1:6,[1 6]) 都依次生成[0,1] 到[0,6]的6个均匀随机数.:十七.Weibull 随机数R = weibrnd(A,B) R = weibrnd(A,B,m) R = weibrnd(A,B,m,n)Matlab 随机数小结1,rand 生成均匀分布的伪随机数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB伪随机数发生器.txt生活是过出来的,不是想出来的。

放得下的是曾经,放不下的是记忆。

无论我在哪里,我离你都只有一转身的距离。

均匀性较好的随机数生成
zz from /lanmuyd.asp?id=3379
随机数生成算法[1]是一类重要的算法,广泛应用于仿真技术等场合。

然而,目前的伪随机数生成器(Pseudo-random number generator, PRNG)[2]存在一个重要缺陷,即样本分布与真实分布不一致,这主要发生在以下两种情况:①抽样代价过高,样本数目较少;②空间维数较高[3]。

因此,有必要寻找一类新的随机数发生器。

准随机数发生器(Quasi-random number generator,QRNG)[4]能够生成稳定、低差异性的(low-discrepancy)样本,而与样本数目或空间维数无关[5]。

故针对蒙特卡罗积分结果不稳定的情况,提出一种基于QRNG的蒙特卡罗积分,发现比传统方法性能有所提升。

伪随机数介绍
伪随机数是由确定的算法生成的,其分布函数与相关性均能通过统计测试。

与真实随机数的差别在于,它们是由算法产生的,而不是一个真实的随机过程。

一般地,伪随机数的生成方法主要有以下3种[6]:
(1)直接法(Direct Method),根据分布函数的物理意义生成。

缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。

(2)逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。

该方法原理简单、编程方便、适用性广。

(3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(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假设检验(hypothesis test)来确定样本是否满足均匀分布。

规定:
① 0假设(null hypothesis)为样本服从均匀分布;② 1假设(alternative hypothesis)为样本不服从均匀分布。

采用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-random sequency)可用来辅助生成均匀分布随机数,分别是Halton序列、Sobol序列、Latin超立方体序列。

/access/helpdesk/help/toolbox/stats/qrandstream.html matlab的方法:
qrandstream - Class: qrandstream
Construct quasi-random number stream
Syntax
q = qrandstream(type,d)
q = qrandstream(type,d,prop1,val1,prop2,val2,...)
q = qrandstream(p)
Description
q = qrandstream(type,d) constructs a d-dimensional quasi-random number stream q of the qrandstream class, of type specified by the string type. type is either 'halton' or 'sobol', and q is based on a point set from either the haltonset class or sobolset class, respectively, with default property settings.
q = qrandstream(type,d,prop1,val1,prop2,val2,...) specifies property name/value pairs for the point set on which the stream is based. Applicable properties depend on type.
q = qrandstream(p) constructs a stream based on the specified point set p. p must be a point set from either the haltonset class or sobolset class.
Examples
Construct a 3-D Halton stream, based on a point set that skips the first 1000 values and then retains every 101st point:
q = qrandstream('halton',3,'Skip',1e3,'Leap',1e2)
q =
Halton quasi-random stream in 3 dimensions
Point set properties:
Skip : 1000
Leap : 100
ScrambleMethod : none
nextIdx = q.State
nextIdx =
1
Use qrand to generate two samples of size four:
X1 = qrand(q,4)
X1 =
0.0928 0.3475 0.0051
0.6958 0.2035 0.2371
0.3013 0.8496 0.4307
0.9087 0.5629 0.6166
nextIdx = q.State
nextIdx =
5
X2 = qrand(q,4)
X2 =
0.2446 0.0238 0.8102
0.5298 0.7540 0.0438
0.3843 0.5112 0.2758
0.8335 0.2245 0.4694
nextIdx = q.State
nextIdx =
9
Use reset to reset the stream, and then generate another sample:
reset(q)
nextIdx = q.State
nextIdx =
1
X = qrand(q,4)
X =
0.0928 0.3475 0.0051
0.6958 0.2035 0.2371
0.3013 0.8496 0.4307
0.9087 0.5629 0.6166
See Also
haltonset | qrand | reset | sobolset
类别:默认分类 | | 添加到搜藏 | 分享到i贴吧 | 浏览(274) | 评论 (0) 上一篇:zz关于交叉验证
最近读者:
网友评论:
发表评论:
姓名:habby1985
内容:
插入表情
同时将此文章分享给好友
验证码:请点击后输入四位验证码,字母不区分大小写
?2011 Baidu。

相关文档
最新文档