我在网上找到了如何用matlab生成服从任意有限离散分布的随机数的方法,代码如下:
function out=drnd(p,n)
%out=drnd(p,n)
%copyright:rocwoods
%p is the probability distribution matrix;
%n is the number of the samples you want to generate;
%=================
a=cumsum(p(2,: ));
b=rand(n,1);
out=zeros(1,n);
for k=1:n
c=find(a<b(k));
if (isempty(c))
out(k)=p(1,1);
else
out(k)=p(1,c(end)+1);
end
end