n = 8;
miu 1 = 1;%第壹次分布的參數
sigma 1 = 2;%第壹次分布的參數
miu 2 = 6;%第二次分布的參數
sigma 2 = 1;%第二次分布的參數
R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);
單點的概率都是零,那麽妳拿出來的隨機數是什麽?
為了滿足統計分布,需要按區間計數幾個隨機數。
另外,我不知道妳要做什麽。
如果要生成壹定概率密度的隨機數,最好用反函數法什麽的。
例如,生成壹個具有x.^2分布的隨機數,但是這些應該是歸壹化的。
============================================
首先,我知道我的錯了。從下圖可以看出。
m = 1000;%生成壹個m行n列的隨機數矩陣。
n = 1;
miu 1 = 1;%第壹次分布的參數
sigma 1 = 2;%第壹次分布的參數
miu 2 = 6;%第二次分布的參數
sigma 2 = 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,sigma 1);
y2=normpdf(x,miu2,sigma 2);
支線劇情(2,2,1);
plot(x,y 1);
支線劇情(2,2,2);
plot(x,y2);
支線劇情(2,2,3);
y3 = 0.2 * y 1+0.8 * y2;
plot(x,y3);
次要情節(2,2,4)
dx = 0.5
xx =-5:dx:15;
yy=hist(R,xx);
YY = YY/M/dx;
plot(x,y3);
繼續
酒吧(xx,yy)
=======================================
正確的方式,我還沒想明白,還在繼續。。。。
============================================
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _新的嘗試
我覺得下面這個結果可能可以接受。
思維:基於逆變換的方法
Matlab有如下內容
P=normpdf(x,miu,sigma)是x處的概率密度。
P=normcdf(x,miu,sigma)就是求x
我給壹個區間,我認為這個區間外的概率是0(這個不夠嚴謹,理論上應該是從負無窮大到正無窮大)。
我這裏取的是-10:15,期間取25000個點,算出這些點的累積概率值(兩點的加權和y3),把這個叫做F(x)。根據逆變換方法,
F(x)=u,其中u是從0到1的均勻隨機數。只要找到它的解x0,x0就滿足給定的概率密度分布。我在這裏使用插值。使用
(y3,x)來插值u的位置。
說明有壹些地方不夠嚴謹,嚴謹要用分析方法來反推。
%%%%以下是程序。
m = 1000;%生成壹個m行n列的隨機數矩陣。
n = 1;
miu 1 = 1;%第壹次分布的參數
sigma 1 = 2;%第壹次分布的參數
miu 2 = 6;%第二次分布的參數
sigma 2 = 1;%第二次分布的參數
x =-10:0.001:15;
y1=normpdf(x,miu1,sigma 1);
y2=normpdf(x,miu2,sigma 2);
y3 = 0.2 * y 1+0.8 * y2;
y1=normcdf(x,miu1,sigma 1);
y2=normcdf(x,miu2,sigma 2);
y = 0.2 * y 1+0.8 * y2;
u =蘭特(N,M);
R=interp1(y,x,u,'線性');
dx = 0.5
xx =-10:dx:15;
yy=hist(R,xx);
YY = YY/M/dx;
酒吧(xx,yy)
堅持住;
繪圖(x,y3,' r* ')