我正在使用概率密度函数:
y = zeros(1,10000);
for j=1:10000
r = rand(100,1);
for i=1:100
y(j) = y(j) + r(i) - 0.5;
end
y(j) = y(j)/sqrt(100);
end
[n,x] = hist(y,100);
plot(x,n/10000/diff(x(1:2)));
hold on;
但是我也想打印理论。我似乎管理的最好的是:
plot(x,normpdf(x,0,1),'r');
但这根本不符合实际情况。我在这里错过了什么?这就是我的情节目前的样子。蓝色是实际的,红色是理论的。
答案 0 :(得分:1)
你的y不是来自统一分布;它们来自均匀分布的i.i.d(独立同分布)随机变量之和的分布,均值为0,方差为1/12。 sum approaches normal distribution作为求和变量的数量(在您的情况下为100)变大。 使用你的代码,我能够很好地适应normpdf,正确的方差是1/12(西格玛是这个数字的平方根):
y2=normpdf(x,0,sqrt(1/12));
plot(x,y2,'r');
顺便说一句,你的matlab代码可以更简单,更易读,取代前8行:
r=rand(100,10000)-0.5;
y=sum(r)/sqrt(100);