如何减少此代码中的for循环?

时间:2013-11-14 06:36:27

标签: algorithm for-loop probability performance

我正在进行涉及太多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

非常感谢! 酯

1 个答案:

答案 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