oldnewbird的个人博客分享 http://blog.sciencenet.cn/u/oldnewbird

博文

Matlab 生成随机数大全

已有 8074 次阅读 2019-10-25 15:11 |个人分类:密度估计|系统分类:科研笔记| Mtlab, 随机数生成

  1. 高斯分布随机数生成

    randn(a):生成一个a*a的标准高斯(正态)分布的随机阵。

    randn(a,b)或者randn([a,b]): 生成一个a行b列的标准高斯分布的随机阵。

    m+sqrt(n)*randn(a):生成一个均值为m,方差为n的满足高斯分布的a*a随机阵。

       R = normrnd(MU,SIGMA): 生成一个均值为MU,标准差为SIGMA的高斯分布的随机数

       R = normrnd(MU,SIGMA,m,n): 生成一个均值为MU,标准差为SIGMA的高斯分布的随机阵(m*n矩阵)

       R = mvnrnd(MU,SIGMA,n): 生成均值为MU(行向量),协方差为SIGMA(矩阵)的n个随机向量。

        mvnpdf(X,MU,SIGMA):生成均值为向量MU,协方差为SIGMA的高斯分布在点X出的概率密度。

       mvncdf(X,MU,SIGMA):生成均值为向量MU,协方差为SIGMA的高斯分布在点X出的累积概率密度。

2. 伽马分布随机数生成

    R = gamrnd(A,B,m,n): 产生服从伽马分布参数为A,B的随机数,m和n是R的行和列维数的范围

3. 卡方分布

        此函数生成服从卡方(Chi-square)分布的随机数。卡方分布只有一个参数:自由度v。基本语法

        chi2rnd(v,[M,N,P,...])

        生成的随机数服从自由度为v的卡方分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        chi2rnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式

        chi2rnd(5,5) %生成5行5列的随机数矩阵

        chi2rnd(5,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的卡方分布的自由度都是5

        生成的随机数大致的分布。

        x=chi2rnd(5,100000,1);

        hist(x,50);

4. f分布

        此函数生成服从F分布的随机数。F分布有2个参数:v1, v2。基本语法

        frnd(v1,v2,[M,N,P,...])

        生成的随机数服从参数为(v1,v2)的卡方分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        frnd(3,5,5,1) %生成5个随机数排列的列向量,一般用这种格式

        frnd(3,5,5) %生成5行5列的随机数矩阵

        frnd(3,5,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(v1=3,v2=5)的F分布

        生成的随机数大致的分布。

        x=frnd(3,5,100000,1);

        hist(x,50);

        从结果可以看出来, F分布集中在x正半轴的左侧,但是它在极端值处也很可能有一些取值。

5. t分布

        此函数生成服从t(Student's t Distribution,这里Student不是学生的意思,而是Cosset.W.S.的笔名)分布的随机数。t分布有1个参数:自由度v。基本语法

        trnd(v,[M,N,P,...])

        生成的随机数服从参数为v的t分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        trnd(7,5,1) %生成5个随机数排列的列向量,一般用这种格式

        trnd(7,5) %生成5行5列的随机数矩阵

        trnd(7,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(v=7)的t分布

        生成的随机数大致的分布。

        x=trnd(7,100000,1);

        hist(x,50);

        可以发现t分布比标准正太分布要“瘦”,不过随着自由度v的增大,t分布会逐渐变胖,当自由度为正无穷时,它就变成标准正态分布了。

        接下来的分布相对没有这么常用,同时这些函数的语法和前面函数语法相同,所以写得就简略一些——在视频中也不会讲述,你只需按照前面那几个分布的语法套用即可,应该不会有任何困难——时间足够的话这是一个不错的练习机会。

6. Beta分布

        此函数生成服从Beta分布的随机数。Beta分布有两个参数分别是A和B。下图是A=2,B=5 的beta分布的PDF图形。

         

        生成beta分布随机数的语法是:

        betarnd(A,B,[M,N,P,...])

7.exprnd()

此函数生成服从指数分布的随机数。指数分布只有一个参数: mu, 下图是mu=3时指数分布的PDF图形

 

生成指数分布随机数的语法是:

betarnd(mu,[M,N,P,...])


8.lognrnd()

        生成服从对数正态分布的随机数。其有两个参数:mu和sigma,服从这个这样的随机数取对数后就服从均值为mu,标准差为sigma的正态分布。下图是mu=-1, sigma=1/1.2的对数正态分布的PDF图形。

         

        生成对数正态分布随机数的语法是:

        lognrnd(mu,sigma,[M,N,P,...])

9.raylrnd()

        生成服从瑞利(Rayleigh)分布的随机数。其分布有1个参数:B。下图是B=2的瑞利分布的PDF图形。

        生成瑞利分布随机数的语法是:

        raylrnd(B,[M,N,P,...])

10.wblrnd()

        生成服从威布尔(Weibull)分布的随机数。其分布有2个参数:scale 参数 A和shape 参数 B。下图是A=3,B=2的Weibull分布的PDF图形。

         

        生成Weibull分布随机数的语法是:

        wblrnd(A,B,[M,N,P,...])

        还有非中心卡方分布(ncx2rnd),非中心F分布(ncfrnd),非中心t分布(nctrnd),括号中是生成服从这些分布的函数,具体用法用:

        help 函数名

        查找。

        

12.unidrnd()

        此函数生成服从离散均匀分布的随机数。Unifrnd是在某个区间内均匀选取实数(可为小数或整数),Unidrnd是均匀选取整数随机数。离散均匀分布随机数有1个参数:n, 表示从{1, 2, 3, ... N}这n个整数中以相同的概率抽样。基本语法:

        unidrnd(n,[M,N,P,...])

        这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        unidrnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式

        unidrnd(5,5) %生成5行5列的随机数矩阵

        unidrnd(5,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布

        生成的随机数大致的分布。

        x=unidrnd(9,100000,1);

        hist(x,9);

        可见,每个整数的取值可能性基本相同。

13.binornd()

        此函数生成服从二项分布的随机数。二项分布有2个参数:n,p。考虑一个打靶的例子,每枪命中率为p,共射击N枪,那么一共击中的次数就服从参数为(N,p)的二项分布。注意p要小于等于1且非负,N要为整数。基本语法:

        binornd(n,p,[M,N,P,...])

        生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        binornd(10,0.3,5,1) %生成5个随机数排列的列向量,一般用这种格式

        binornd(10,0.3,5) %生成5行5列的随机数矩阵

        binornd(10,0.3,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布

        生成的随机数大致的分布。

        x=binornd(10,0.45,100000,1);

        hist(x,11);

        我们可以将此直方图解释为,假设每枪射击命中率为0.45,每论射击10次,共进行10万轮,这个图就表示这10万轮每轮命中成绩可能的一种情况。

14.geornd()

        此函数生成服从几何分布的随机数。几何分布的参数只有一个:p。几何分布的现实意义可以解释为,打靶命中率为p,不断地打靶,直到第一次命中目标时没有击中次数之和。注意p是概率,所以要小于等于1且非负。基本语法:

        geornd(p,[M,N,P,...])

        这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        geornd(0.4,5,1) %生成5个随机数排列的列向量,一般用这种格式

        geornd(0.4,5) %生成5行5列的随机数矩阵

        geornd(0.4,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(0.4)的二项分布

        生成的随机数大致的分布。

        x=geornd(0.4,100000,1);

        hist(x,50);

15.poissrnd()

        此函数生成服从泊松(Poisson)分布的随机数。泊松分布的参数只有一个:lambda。此参数要大于零。基本语法:

        geornd(p,[M,N,P,...])

        这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

        poissrnd(2,5,1) %生成5个随机数排列的列向量,一般用这种格式

        poissrnd(2,5) %生成5行5列的随机数矩阵

        poissrnd(2,[5,4]) %生成一个5行4列的随机数矩阵

        %注:上述语句生成的随机数所服从的参数为(2)的泊松分布

        生成的随机数大致的分布。

        x=poissrnd(2,100000,1);

        hist(x,50);

        其他离散分布还有超几何分布(Hyper-geometric, 函数是hygernd)等,详细见Matlab帮助文档。

参考文档:http://blog.sina.com.cn/s/blog_7e7409e30100w6n9.html




https://blog.sciencenet.cn/blog-3421825-1203406.html

上一篇:高斯核密度估计方法代码
下一篇:粒子滤波中重采样到底靠不靠谱?
收藏 IP: 219.239.227.*| 热度|

1 杨正瓴

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-19 14:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部