当前位置:首页 > Matlab笔记 - 数值计算—概率篇017
17. 数值计算—概率篇
一、计算组合数、排列数
n!——factorial(n)或 prod(1:n)
Cnk——nchoosek(n,k) Ank——factorial(n)/factorial(n-k)
二、生成随机数
1. rand(m,n)
——生成m×n的服从[0,1]上均匀分布的随机数;
用a + (b-a).*rand(m,n)生成m×n的服从[a,b]上均匀分布的随机数。
2. 二项分布与正态分布随机数
binornd(N,P,m,n)——生成m×n的服从二项分布B(N,P)的随机数; normrnd(MU,SIGMA,m,n)
——生成m×n的服从正态分布N(MU,SIGMA2)的随机数; 3. 通用格式:
分布缩写+rnd(分布参数, m,n)
或random(‘分布名或缩写’, 分布参数, m,n)
可以用来生成m×n该分布的随机数。各种分布名见下图:
表1 一维随机变量概率分布名称表 分布缩写、分布名称 'beta' 或 'Beta' 'bino' 或 'Binomial' Beta分布 二项分布 函数说明 'chi2' 或 'Chisquare' 'exp' 或 'Exponential' 'f' 或 'F' 'gam' 或 'Gamma' 'geo' 或 'Geometric' 'hyge' 或 'Hypergeometric' 'logn' 或 'Lognormal' 'nbin' 或 'Negative Binomial' 'ncf' 或 'Noncentral F' 'nct' 或 'Noncentral t' 'ncx2' 或 'Noncentral Chi-square' 'norm' 或 'Normal' 'poiss' 或 'Poisson' 'rayl' 或 'Rayleigh' 't' 或 'T' 'unif' 或 'Uniform' 'unid' 或 'Discrete Uniform' 'weib' 或 'Weibull' 卡方分布 指数分布 F分布 GAMMA分布 几何分布 超几何分布 对数正态分布 负二项式分布 非中心F分布 非中心t分布 非中心卡方分布 正态分布 泊松分布 瑞利分布 T分布 均匀分布 离散均匀分布 威布尔分布
4. 使用randsample和randsrc函数生成指定离散分布随机数
X=randsample(N, k, replace, w)
N相当于[1:N], 也可以是具有确定值的向量;k表示生成k个随机数;replace=’true’表示可重复,或’false’表示不可重复(默认);w是权重向量。
X= randsrc(m,n,[x; p])
生成m×n的随机矩阵,服从取值为向量x, 对应概率为向量p的离散分布。
例1 设离散型随机变量X服从如下分布:
X P -2 0.05 -1 0.2 0 0.5 1 0.2 2 0.05 生成服从3×5的该分布的随机数。
代码:
xvalue = [-2 -1 0 1 2];
xp = [0.05 0.2 0.5 0.2 0.05];
% 调用randsample函数生成100个服从指定离散分布的随机数 x = randsample(xvalue, 15, true, xp); reshape(x,[3 5])
% 调用randsrc函数生成10*10的服从指定离散分布的随机数矩阵 y = randsrc(3,5,[xvalue;xp])
运行结果:ans = 0 0 1 0 0 0 0 0 -1 -1 1 1 0 0 1
y = -1 -1 1 1 -1 -1 0 0 2 0 -1 0 -1 0 0
5. 已知概率密度函数,生成服从该分布的随机数 例2 设随机变量X的概率密度函数为(抛物线分布):
?6x(1?x), 0?x?1f(x)??
? 0, 其他调用crnd函数(来自《MATLAB统计分析与应用 40个案例分析》作者:谢中华),生成3×5个服从该分布的随机数。
代码:
pdffun = '6*x*(1-x)'; % 密度函数表达式 x = crnd(pdffun,[0 1],3,5)
运行结果:x = 0.3160 0.6866 0.2724 0.2816 0.1268 0.2681 0.8439 0.1948 0.7999 0.5383 0.7377 0.2040 0.4932 0.1948 0.6909
6. 生成多元分布的随机数
mrnd(N, P, m)——多项分布,P为概率向量;
mvnrnd(mu, sigma, m)——多元正态分布,mu, sigma为n元向量; mvtrnd(C, df, m)——多元t分布; wishrnd(sigma,df,m)——Wishart分布; iwishrnd(sigma,df, m)——逆Wishart分布;
例3利用mvnrnd函数生成3组的二元正态分布随机数,其中分布的参数为
?10??13??=??,?=? ??20??316?代码:
mu = [10 20];
共分享92篇相关文档