Matlab生成符合某种概率分布的序列生成方法

13 篇文章 2 订阅

随机事件的模拟
一、实验目的

会使用随机数命令rnd,进而求服从各种分布的随机数列(样本)。熟悉随机事件的模拟。

二、预备知识

随机数产生器

     所有分布的随机数的产生方法都始于均匀分布随机数。一旦具备了均匀分布随机数产生器,其他分布

的随机数都可使用直接法、反转(inversion)法或拒绝(rejection)法获得。

(1)   随机数产生的基本方法

1   直接法(direct)

     直接法源于分布的定义。假设产生二项分布随机数,可以认为其随机数就是在n次抛硬币之后,某一

面出现的次数(每次抛掷时,此面出现的概率为p)。如果产生了n个均匀分布随机数,数出大于p的次数m,

那么结果m就是参数为n和p的二项分布的随机数。

2   反演法(inversion)

    反演方法的理论基础在于均匀分布与其他连续分布之间的关系。假设P为一连续分布,其逆为F   ;U是

一个均匀分布随机数,则   (U)服从F分布。因此,可将某种分布的逆函数作用于均匀分布的随机数,获得

这种分布的随机数。遗憾的是,这种方法通常并不是最有效的。

3   拒绝法(rejection)

    对于某些分布,其函数形式使得运用直接法和反演法来产生随机数比较困难或费时较多。在这种情况

下,拒绝法或许能很好地解决这一问题。

     若要产生概率密度函数为f的某种分布的随机数,若采用拒绝法,首先需找到另一分布密度函数g和一

个常数c,并满足以下条件:

f(x)<=cg(x),  

然后通过以下步骤进行:

1.   产生概率密度为g(x)的G分布的随机数x

2.     设参数   ;

3.         产生一个均匀分布随机数u

4.   如果r×   <1,返回x

5.否则重复第1步至第3步。

     为提高效率,产生G分布随机数的方法要简单,而且常数c的值要小。迭代的期望值为c。

(2)   产生随机数的通用函数

     在工具箱中,提供了通用的随机数产生因数random和特定分布的随机数产生函数(以rnd结尾)。可以

直接调用这些函数来获得所需的随机数,而不必经过(1)中所述的过程。

random( )

功能:产生可选分布的随机数。

格式: y=random(‘name’,A1,A2,A3,m,n)

说明: random函数产生统计工具箱中任一分布的随机数。‘name’为相应分布的名称。A1、A2和A3为分布

参数,其意义同pdf函数中的说明。参数m、n确定了结果y的数量,如果分布参数A1、A2和A3为标量,则y

以m×n矩阵形式给出;如果A1、A2和A3为矢量,则m,n是可选的,但应注意,它们所给出的长度或矩阵行

列数必须与分布参数的长度相匹配。

举例:   rn=   random(‘Normal ‘,0,1,2,4)

     rn   =

     1.1650   0.075l   -0.6965   0.0591

     0.6268   0.35l 6   1.6961   1.7971

     rp   =   random(‘Poisson’,1:6,1,6)

     rp   =

     0   0   1   2   5   7

(3)特定分布的随机数产生函数

     对于20种分布类型,每种分布的随机数都可任意产生。函数可以产生单个随机数或随机数矩阵,这取

决于函数调用时所采用的参数。所有特定分布的随机数产生函数列在下表内。下面说明产生   分布随机数

的方法。四条语句分别给出不同的随机数。

a=1;

b=2;

c =[.1   .5;   1   2]

d=   [.25   .75;   5    l0]

m=   [2   3];

nrow =   2;

ncol=3;

r1=betarnd(a,b)

r1

     0.4469

r2   =   betarnd(c,d)

     0.8931   0.4832

0.1316   0.2403

r3   =   betarnd(a ,b,m)

r3   =

     0.4l 96   0.6078   0.1392

     0.04l0   0.0 723   0.0782

r4   =   betarnd(a , b,nrow, ncol)

r4   =

     0.0520   0.3975   0.1284

0.389l   0.1848   0.518 6

函数binornd( )

功能;生成服从二项分布的随机数

语法;R=binornd(N,P)

       R=binornd(N,P,mm)

       R=binornd(N,P,mm,nn)

说明:

       R=binornd(N,P)     生成服从参数为N和P的二项分布的随机数。输入的向量或矩阵N,P必须形式

相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。参数A,B必须全

部为正。

     R=binornd(N,P,mm)     生成服从参数为N和P的二项分布的随机数矩阵,矩阵的形式由mm定义。mm

是一个l×2向量,其中的两个元素分别代表返回值R中行与列的维数。

     R=binornd(N,P,mm,nn)     生成mm×nn形式的二项分布随机数矩阵。

生成3组服从二项分布的随机数。

n=10:10:60

r1=binornd(n,1./n)

r1=

0          1   0   0   1   3

r2=binornd(n,1./n,[1 6])

r2=

   1    0   1   2   0   0

r3=binornd(n,1./n,1,6)

r3=

    1   1    1   0    3    0

函数normrnd()

功能:生成服从正态分布的随机数

语法:R=normrnd(MU,SIGMA)

       R=normrnd(MU,SIGMA,m)

R=normrnd(MU,SIGMA,m,n)

说明:

     R=normrnd(MU,SIGMA)     生成服从正态分布(参数为V和DELTA)的随机数。输入的向量或矩阵MU和

SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。

     R=norrmrnd(MU,SIGMA,m)     生成服从正态分布(参数为V和DELTA)的随机数矩阵,矩阵的形式由m

定义。m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。

R=normrnd(MU,SIGMA,m,n)     生成m×n形式的正态分布的随机数矩阵。

生成正态分布随机数。

n1=normrnd(1:6,1./(1,6))

n1 =

-0.2013   1.9401   2.9782   4.1213   5.9751

n2=normrnd(0,1,[1 5])

n2=

-0.4348   -0.0793   1.5352   -0.6065   -1.3474

n3=normrnd([1   2   3;   4   5   6],0,1,2,3)

n3=

1.0469     2.0036     3.0535

3.9096     4.9372     6.0553

函数poissrnd( )

功能:生成服从泊松分布的随机数

语法:R=poissrnd(LAMBDA)

       R=poissrnd(LAMBDA,m)

       R=poissrnd(LAMBnA,m,n)

说明:

     R=poissrnd(LAMBDA)     生成服从泊松分布(参数为LAMBDA)的随机数。R与LMBDA形式相同。

     R=poissrnd(LAMBDA,m)     生成服从泊松分布(参数为LAMBDA)的随机数矩阵,矩阵的形式由m定义

。m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。

R=poissrnd(LAMBDA,m,n)     生成m×n形式的泊松分布的随机数矩阵。

例:

生成泊松分布随机数。

lambda=2;

random_samplel=poissrnd(1ambda,1,10)

random_samPtel=

1     2     5     2     2    2    0    0    5   0

random_sample2   =poissrnd(lambda,[1   10])

random _sample2=

2   2   3    4    2    2    3    1    1    2

random_sample3=poissrnd(lambda(ones(1,10)))

random_sample3   =

0   4    3    0    2    2   0    2    2    1

函数chi2rnd()

功能:生成服从   分布的随机数

语法:R=chi2rnd(V)

       R=chi2rnd(V,m)

       R=chi2rnd(V,m,n)

说明:

     R=chi2rnd(V)     生成服从参数为V的   分布的随机数。输入V与输出R的形式相同。

R=chi2rnJ(V,m)     生成服从参数为v的   分布的随机数矩阵,矩阵的形式由m定义。m是一个l×2向量,

其中的两个元素分别代表返回值R中行与列的维数。

R=chi2rnd(V,m,n)     生成m×n形式的   分布随机数矩阵。

注意下面第一和第三行命令的结果是相同的,但与第二行不同。

例:

r=chi2rnd(1:6)

r=

4.9814   1.5768   0.8l 85   2.3841     11.2004   4.7084

r=chi2rnd(6,[16])

r=

3.4382   4.7481   8.0298   5.4022   7.6320   11.2005

r=chi2rnd(1:6,1,6)

r=

       0.9203     0.4408     2.3678     3.7319     4.3886     7.6885

函数exprnd( )

功能:生成服从指数分布的随机数

语法:R=exprnd(MU)

       R=exprnd(MU,m)

R=exprnd(MU,m,n)

说明:

     R=exprnd(MU)     生成服从参数为MU的指数分布的随机数。输入MU与输出

R的形式相同。

     R=exprnd(MU,m)     生成服从参数为MU的指数分布的随机数矩阵,矩阵的形式由m定义。m是一个1

×2向量,其中的两个元素分别代表返回值R中行与列的维数。

     R=exprnd(MU,m,n)     生成m×n形式的指数分布的随机数矩阵。

例:

生成指数分布随机数。

n1=exprnd(5:10)

n1=

       4.0076   3.8735   12.3433   16.2809   13.6772   22.4923

       n2=exprnd(5:10,[1   6])

n2=

9.7799   4.6988   1.6666   10.1534   13.4334   0.9555

n3=exprnd(5,2,3)

n3=

24.5797     3.0614     5.8008

2.6489     2.1269     7.3233

随机数产生函数

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值