-3
如何生成不同隨機數根據概率分佈函數,使用Matlab,其中生成的數字必須是不同,在0和1之間,這些數之和等於1根據概率分佈函數生成隨機數
如何生成不同隨機數根據概率分佈函數,使用Matlab,其中生成的數字必須是不同,在0和1之間,這些數之和等於1根據概率分佈函數生成隨機數
這叫做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);
如果他們的總和是1你不需要生成2個數字。 – bla
一旦你的數字分佈在0和1之間,你可以通過將每個數字除以它們的總和來強加你的總和條件。 – Steve
如果數字都不相同,它們不會隨機更多 –