如何生成概率向量?

时间:2014-12-12 22:37:21

标签: matlab random probability

我想生成一个遵循某种已知分布的概率向量。

例如,当我希望分布统一时,我可以在MATLAB中完成:

N     = 5;
proba = (1/(N))*ones(1, N);

如果我想用泊松分布或二项分布做什么怎么办?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找使用内置MATLAB函数的解决方案,您可以查看random,它允许您为众多众所周知的发行版提供参数。

例如,如果您想从具有M x N次试用和n成功机会的二项式分布中绘制p值矩阵:

n=3; p=0.5; M=20; N=1;
random('Binomial',n,p,[M,N]) 


如果您有自己创建的(离散)概率分布,并将PMF作为向量给出,则可以通过从r上的统一分布生成随机数[0,1]来对其进行采样使用r=rand(),然后选择CMF中第一个大于r的bin。

x   = [  0   1   2   3  ];
PMF = [0.25 0.2 0.5 0.05];
CMF = cumsum(PMF);
N = 10000;
valuesDrawn = zeros(N,1);
for i = 1:N
    r = rand();
    for j = 1:length(PMF)
        if r < CMF(j)
          valuesDrawn(i) = x(j);
          break;
        end
    end
end

hist(valuesDrawn);