【问题标题】:Generate random numbers according probability distribution functions根据概率分布函数生成随机数
【发布时间】:2017-12-20 21:21:26
【问题描述】:

如何根据概率分布函数生成不同随机数,使用Matlab,其中生成的数字必须不同,介于0和1之间,并且这些数字之和等于1

【问题讨论】:

  • 如果它们的总和为 1,则不需要生成 2 个数字。
  • 一旦你有一个介于 0 和 1 之间的数字分布,你可以通过将每个数字除以它们的总和来施加求和条件。
  • 如果数字都不同,它们就不再那么随机了
  • 如果你强加总和为1的条件,它们的分布函数可能会改变(见this
  • @MadPhysicist “如果数字都不同,它们就不再那么随机”是什么意思?

标签: matlab random probability


【解决方案1】:

这称为Dirichlet distribution,下面是从中采样的代码。最简单的情况是所有参数都等于 1

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

狄利克雷是单位尺度伽马随机变量的向量,归一化为 他们的总和。所以,没有错误检查,这会让你:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2011-03-31
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多