【发布时间】:2014-12-12 22:37:21
【问题描述】:
我想生成一个遵循某个已知分布的概率向量。
例如,当我希望分布均匀时,我可以在 MATLAB 中进行:
N = 5;
proba = (1/(N))*ones(1, N);
如果我想使用泊松分布或二项分布怎么办?
【问题讨论】:
标签: matlab random probability
我想生成一个遵循某个已知分布的概率向量。
例如,当我希望分布均匀时,我可以在 MATLAB 中进行:
N = 5;
proba = (1/(N))*ones(1, N);
如果我想使用泊松分布或二项分布怎么办?
【问题讨论】:
标签: matlab random probability
如果您正在寻找使用内置 MATLAB 函数的解决方案,您可以查看random,它允许您为多种类型的知名分布提供参数。
例如,如果您想从具有n 试验和p 成功机会的二项分布中绘制值的M x N 矩阵:
n=3; p=0.5; M=20; N=1;
random('Binomial',n,p,[M,N])
如果您有自己创建的(离散)概率分布,并将 PMF 作为向量给出,您可以通过使用r=rand() 从[0,1] 上的均匀分布生成随机数r 从中采样然后选择 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);
【讨论】: