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

Is there a faster way to calculate the expected value?

所以对于我的概率 class,我的教授就作业问题提出了以下问题:

一枚公平的硬币被抛掷 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

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

您可以将所有测试结果放在一行中的单个矩阵中,然后计算每个测试的 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)