我试图将以下分段函数作为概率分布输入到matlab中。然后我试图生成X的随机值。我有统计工具框,所以我可以使用它生成随机数,但我无法弄清楚如何输入函数,以便我可以实际生成随机数。
P(X)= Ax 0<=x<1
A/2 1<=x<2
0 otherwise
A是归一化常数。
我最终希望从这个分布中显示10,000个试验的直方图,并找出我的模拟的平均值和标准偏差。
答案 0 :(得分:2)
来自给定分布的样本可以使用逆变换采样生成(参见http://en.wikipedia.org/wiki/Inverse_transform_sampling)这很简单,因为您只需生成均匀分布的值,然后计算累积分布函数的逆矩阵
累积分布函数可以通过整合propability density函数来计算,在你的情况下
x ^ 2/2 ... x来自&lt; 0,1&gt;
x / 2 ... x来自(1,2>
注意,归一化常数是A = 1 现在,执行此操作的m文件如下
function vals =genDist(len)
vals = rand(len,1);
for i=1:length(vals)
if vals(i)<=1/2 % vals(i) 0..0.5
vals(i) = sqrt(2*vals(i));%inverse function of x^2/2
else % vals(i) 0.5-1
vals(i) = vals(i)*2; %inverse function of x/2
end
end
端