如何使用Matlab根据概率分布函数生成不同的随机数,其中生成的数字必须不同,介于0和1之间,并且这些数字的总和等于1
答案 0 :(得分: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);