有没有更快的方法来计算预期值?

时间:2017-09-08 00:02:02

标签: matlab probability-theory

因此,对于我的概率课,我的教授在家庭作业问题上提出以下问题:

一枚公平的硬币被翻转10,000次。设X对应于头数和尾数之间的差异。使用MATLAB,计算X的预期值。

这是我写的回答问题:

N = 10000;
i =0;
r=1/2;
Q=nchoosek(N,(X+N)/2);
X=(1,N);

for i=-N:N
    P=Q*r.^(X+N)/2*(1-r)^(N-(X+N)/2) % probability_mass_function
    E=sum(abs(X).*P); % expected value

end

但是,有更快更快的方法来计算这个预期值吗?任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您可以将所有测试结果放在一行中的单个矩阵中,然后计算每个测试的X,然后计算X的平均值:

clear

TAIL=0; HEAD=1; 

NumTests=121;

NumRollsPerTest=10*1000;

AllTestsRolls= rand(NumTests,NumRollsPerTest)>0.5 ; %head when rand>0.5

XperTest=sum(AllTestsRolls==HEAD,2)-sum(AllTestsRolls==TAIL,2);%every row is test so calc per test

ExpectedX=sum(XperTest)/length(XperTest)