[高分]Matlab 关于三角形分布的模拟 求matlab code

2025-05-18 23:23:57
推荐回答(1个)
回答(1):

a=-1; %分布左端,小于0的值
b=2;  %分布右端,大于0的值
h=2/(b-a); %三角形高
k1=-h/a; %前半段斜率
k2=-h/b; %后半段斜率

invcdf=@(s)(sqrt(2*s/k1)+a).*(s<=-a*h/2)+...
    (b-sqrt(2*(s-1)/k2)).*(s>-a*h/2);%cdf逆函数

N=10000;               %随机数数量
RV=invcdf(rand(1,N));  %随机变量数列
K=50;                  %统计区间数量
xx=linspace(a+(b-a)/K/2,b-(b-a)/K/2,K);
n = hist(RV,xx);       %统计变量不同区间出现数量
p=K*n/N/(b-a);         %不同区间出现的概率

x=[a 0 b];y=[0 h 0];   %pdf图像

bar(xx,p,1);hold on
plot(x,y,'r','linewidth',2);hold off
xlabel('x');
ylabel('probability');
legend('probability histogram','theoretical pdf');