名为DicePlot的函数模拟滚动10个骰子5000次。
该函数计算每个卷的10个骰子的值的总和,其将是1⇥5000向量,并且绘制相对频率直方图,其中选择二进制位的边缘,其中直方图中的每个二进制位表示可能的值。为骰子的总和。
将计算1×5000个骰子值之和的平均值和标准差,并绘制在相对频率直方图之上的正态分布的概率密度函数(计算平均值和标准差)。
以下是我的代码到目前为止 - 我做错了什么?图表显示但顶部没有额外的红线?我看了这样的答案,我认为我不会像高斯函数那样绘制任何东西。
% function[]= DicePlot()
for roll=1:5000
diceValues = randi(6,[1, 10]);
SumDice(roll) = sum(diceValues);
end
distr=zeros(1,6*10);
for i = 10:60
distr(i)=histc(SumDice,i);
end
bar(distr,1)
Y = normpdf(X)
xlabel('sum of dice values')
ylabel('relative frequency')
title(['NumDice = ',num2str(NumDice),' , NumRolls = ',num2str(NumRolls)]);
end
应该看起来像
但看起来像是
答案 0 :(得分:2)
红线不在那里,因为你没有密谋。查看normpdf
的文档。它计算pdf,它没有绘制它。所以问题是如何将这一行添加到图中。这个问题的答案是google“matlab hold on”。
答案 1 :(得分:2)
这里有一些代码可以让你朝着正确的方向前进:
% Normalize your distribution
normalizedDist = distr/sum(distr);
bar(normalizedDist ,1);
hold on
% Setup your density function using the mean and std of your sample data
mu = mean(SumDice);
stdv = std(SumDice);
yy = normpdf(xx,mu,stdv);
xx = linspace(0,60);
% Plot pdf
h = plot(xx,yy,'r'); set(h,'linewidth',1.5);