2014-02-25 114 views
1

如下面的代碼所示,我目前正在生成數字,從Normal Distribution開始,並選擇-3*sigma3*sigma區間內的數字。但是,我現在想要生成數字,以便選擇-3*sigma3*sigma區間以外的數字的概率較高。例如。 [-4*sigma -3*sigma)中的數字應具有35%被選中的概率,並且對於[3*sigma 4*sigma)應該具有相同的概率。 基本上,我會多次調用這個函數,並且想知道是否有一種方法可以讓我從正態分佈的「尾部」中選擇更高比例的隨機數,而不會實際改變正態分佈的形狀。我正在努力做到這一點。Matlab:從給定概率的正態分佈中生成隨機數

function [new_E11, new_E22] = elasticmodulusrng() 

new_E11 = normrnd(136e9,9.067e9,[1 1]); 

new_E22 = normrnd(8.9e9,2.373e9,[1 1]); 

while new_E11<=-3*9.067e9 && new_E11>=3*9.067e9 
     new_E11 = normrnd(136e9,9.067e9,[1 1]); 
end 

while new_E11<=-3*2.373e9 && new_E11>=3*2.373e9 
     new_E22 = normrnd(8.9e9,2.373e9,[1 1]); 
end 

感謝

+1

但在那情況下,它不會是一個正常的分配了。你想如何改變它的形狀? –

+0

我基本上想要爲'new_E11'生成正態分佈,例如,使用均值136e9和S.D. 9.067e9,然後我想從間隔[-4 * sigma -3 * sigma)和[3 * sigma 4 * sigma)中選擇一個概率爲35%的點。這可能嗎? – Jojo

+1

這些點的概率由分佈的形狀決定,並且比這小得多。 –

回答

1

的問題並沒有太大的意義,因爲所指出的喬喬:這不是一個正態分佈了。

你可以做的是創建自己的概率密度函數pdf並從中抽取。

例如,

N = pdf('Normal',-5:0.2:5,0,1); 

爲您提供了一個良好的分辨率正常PDF。 你可以改變它,說

Z = N; 
Z(5:15)=3*Z(5:15); 
Z(35:45)=3*Z(35:45); 

,並使用直接法,反演方法,或接受 - 拒絕方法的解釋here

有一個在FileExchange實現: http://www.mathworks.com/matlabcentral/fileexchange/27590-simple-rejection-sampling

+0

我明白你的意思了。我一直在考慮在獲得N的「目標分配」時使用Acceptance-Rejection Method。但是,我不明白我怎麼可能對「正態分佈」尾部的「擬議分佈」建模?謝謝 – Jojo