根据概率分布函数生成随机数

时间:2017-07-16 06:06:56

标签: matlab random probability

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