我想生成一个遵循某种已知分布的概率向量。
例如,当我希望分布统一时,我可以在MATLAB中完成:
N = 5;
proba = (1/(N))*ones(1, N);
如果我想用泊松分布或二项分布做什么怎么办?
答案 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);