我正在进行涉及太多for循环的计算。我很感激任何可以消除一些循环以使算法更有效的想法。这是我想得到的数学表达式:随机变量Y的离散分布。
Pr(Y = y)=
Σ_Pr(Z = z)∙Σ_Pr((X = x)Σ_Pr(W = w)∙Σ_Pr(R =r│W= w)∙Pr(S = z + y-x-r | W = w)
Y,Z,X,W,R,S是离散随机变量,它们是相关的。我知道每个术语的表达式,但只有概率计算 - 而不是近似形式的分布。
array Y[max_Y+1]; % store the distribution of Y
temp1=0, temp2=0, temp3=0, temp4=0; % summation for partial distributions
for y = 0 max_Y
temp1=0;
for z = 0 : 5- y
temp2=0;
for x=0:5
temp3=0;
for w=0:5
temp4=0
for r=0:w
temp4=temp4+Pr(R=r│W=w)∙Pr(S=z+y-x-r|W=w);
end
temp3=temp3+temp4*Pr(W=w);
end
temp2= temp2+temp3*Pr(X=x);
end
temp1=temp1+temp2* P(Z=z);
end
Y[y]=temp1;
end
非常感谢! 酯
答案 0 :(得分:0)
从我在每次迭代中注意到的只有术语Pr(S=z+y-x-r|W=w) & Pr(Z=z)
取决于你的函数输入变量Y所以所有其他值可以使用单独的for循环预先计算,然后只计算Pr(S=z+y-x-r|W=w)*Pr(Z=z)*precomputed