Как насчет использования чего-то вроде
In[1]:= dist = ParallelTable[RandomVariate[NormalDistribution[]], {100000}];//Timing
Out[1]= {0.15601, Null}
In[2]:= folded = FoldList[.95 #1 + #2 &, First@dist, Rest@dist]; // Timing
Out[2]= {0.056003, Null}
, которое вы можете сравнить с
In[3]:= Subscript[d, 1] = dist[[1]];
Do[Subscript[d, n] = 0.95 Subscript[d, n - 1] + dist[[n]],
{n, 2, Length@dist}] // Timing
Out[3]= {1.09607, Null}
In[4]:= Table[Subscript[d, n], {n, 1, Length@dist}] === folded
Out[4]= True