常见一元分布随机数
(1) MATLAB统计工具箱中函数名以rnd三个字符串结尾的函数用来生成常见分布的随机数。如下表
函数名 说明
binornd 二项分布随机数
chi2rnd 卡方分布随机数
exprnd 指数分布随机数
frnd F分布随机数
lognrnd 对数分布随机数
mnrnd 多项分布随机数
normrnd 正态分布随机数
..................
例:
调用normrnd函数生成1000x3的正态分布随机函数,其中均值u=75,标准差为8,并画出各列频数直方图
%调用normrnd函数生成1000行3列的随机数矩阵x,其元素服从均值为75,标准差为8的正态分布
>> x=normrnd(75,8,1000,3);%调用-rnd函数,需要传递给它分布函数的参数,和生成矩阵的维数
>> figure;
>> hist(x); %绘制矩阵x每列的频数直方图
>> xlabel(正态分布随机数(\mu=75,\sigma=8));
>> ylabel(频数);
>> leg(第一列,第二列,第三列);
(2)random函数
random函数是一种通用的求各分布的随机数的函数,格式如下:
y=random(‘name’,A1,A2,A3,m,n)
name指定是那种分布函数,取值为上表中 MATLAB中常见分布函数名的简称
A1,A2,A3是分布函数的参数
m,n用来指定生成随机数的行和列
例:用normrnd和random函数分布生成1000x1的正态分布随机函数,其中均值u=75,标准差为8,并画出频数直方图
x=normrnd(75,8,1000,1); %normrnd函数生成均值u=75,标准差为8的正态随机数
xx=random(norm,75,8,1000,1);%random函数生成均值u=75,标准差为8的正态随机数
figure;
hist(x),title(normrnd频数分布直方图);
>> figure;
>> hist(xx),title(random频数分布直方图);
例:调用random函生成1000x1的二项分布随机数向量,然后做出频率直方图。二项分布的参数为n=10,p=0.3
注意:如何计算频率直返图,首先调用ecdf函数就算出经验累积概率分布函数值,然后调用ecdfhist函数绘制频率直方图,其参数是ecdf函数的返回值
%调用random函数生成1000行1列的随机数向量x,其元素服从二项式分布B(10,0.3)
x=random(bino,10,0.3,1000,1);
[fp,xp]=ecdf(x);
ecdfhist(fp,xp,20);%50表示柱状图的个数,默认是10
>> xlabel(二项分布(n=10,p=0.3)随机数);
>> ylabel(f(x));
明天继续发布MATLAB如何生成任意一元分布的随机数。