2017-07-16 182 views
-3

如何生成不同隨機數根據概率分佈函數,使用Matlab,其中生成的數字必須是不同,在0和1之間,這些數之和等於1根據概率分佈函數生成隨機數

+0

如果他們的總和是1你不需要生成2個數字。 – bla

+3

一旦你的數字分佈在0和1之間,你可以通過將每個數字除以它們的總和來強加你的總和條件。 – Steve

+1

如果數字都不相同,它們不會隨機更多 –

回答

0

這叫做Dirichlet distribution,下面是從中抽樣的代碼。最簡單的情況是當所有參數都等於1時

-----------------取自here ---------------- -----

Dirichlet是單位尺度伽馬隨機變量的向量,由它們的和歸一化爲 。所以,沒有錯誤檢查,這會得到你:

a = [1.0 1.0 1.0]; 
n = 10000; 
r = drchrnd(a,n) 

function r = drchrnd(a,n) 
p = length(a); 
r = gamrnd(repmat(a,n,1),1,n,p); 
r = r ./ repmat(sum(r,2),1,p);