[转] 如何用matlab生成服从混合高斯分布的随机数?

 

   如何用matlab生成服从混合高斯分布的随机数?

 

M=10; %产生M行N列的随机数矩阵
N=8;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数


R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);


单点的概率全是0,那你取出来的随机数算什么?
若干个随机数要满足统计分布,是要按区间统计的
另外我不知道你要做什么就是了。
你如果想按一定的概率密度来产生随机数,你最好用反函数法之类的来弄。

比如产生一个x.^2分布的随机数,不过这些要归一化。

============================================
首先,我知道我的是错的了。如下图就可知
M=1000; %产生M行N列的随机数矩阵
N=1;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数


R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);


x=-5:0.001:15;
y1=normpdf(x,miu1,sigma1);
y2=normpdf(x,miu2,sigma2);
subplot(2,2,1);
plot(x,y1);
subplot(2,2,2);
plot(x,y2);
subplot(2

你可能感兴趣的:(Matlab)