TEX*_*TEX 2 random matlab distribution probability-theory
我在 Matlab 中有一个支持 ( supp_epsilon) 和一个概率质量函数 ( pr_mass_epsilon),构造如下。
supp_epsilon=[0.005 0.01 0.015 0.02];
suppsize_epsilon=size(supp_epsilon,2);
pr_mass_epsilon=zeros(suppsize_epsilon,1);
alpha=1;
beta=4;
for j=1:suppsize_epsilon
pr_mass_epsilon(j)=betacdf(supp_epsilon(j),alpha,beta)/sum(betacdf(supp_epsilon,alpha,beta));
end
Run Code Online (Sandbox Code Playgroud)
请注意, 的分量pr_mass_epsilon总和为1。现在,我想n从 中抽取随机数pr_mass_epsilon。我怎样才能做到这一点?我想要一个适用于任何suppsize_epsilon.
换句话说:我想从 中随机抽取元素supp_epsilon,每个元素的概率为pr_mass_epsilon。
该randsample函数可以直接执行此操作:
result = randsample(supp_epsilon, n, true, pr_mass_epsilon);
Run Code Online (Sandbox Code Playgroud)
手动方法:
n区间 (0,1) 内的均匀随机变量的样本。result = supp_epsilon(sum(rand(1,n)>cumsum(pr_mass_epsilon(:)), 1)+1);
Run Code Online (Sandbox Code Playgroud)
对于您的示例,使用n=1e6两种方法中的任何一种都会给出与此类似的直方图:
histogram(result, 'normalization', 'probability')
Run Code Online (Sandbox Code Playgroud)