因此,对于我的概率课,我的教授在家庭作业问题上提出以下问题:
一枚公平的硬币被翻转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
但是,有更快更快的方法来计算这个预期值吗?任何帮助将不胜感激。谢谢
答案 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)