--- # katex title: running average --- The running average $a_n$ of a series $R_n$ $$a_n =\frac{a\_{n-1}\times u+R_n\times v}{u+v}$$ The larger $u$ and the smaller $v$, the longer the period over which the running average is taken. We don’t want to do floating point arithmetic, because different peers might get different answers. It is probably harmless if they get different answers, provided that this happens rarely, but easier to ensure that this never happens than to try to think about all the possible circumstances where this could become a problem, where malicious people could contrive inputs to make sure it becomes a problem. Unsigned integer arithmetic is guaranteed to give the same answers on all hardware under all compilers. So, when we can, use unsigned integers. $R_n$is a very small integer where we are worried about very small differences, so we rescale to represent arithmetic with eight or so bits after the binary point in integer arithmetic. $\widetilde {a_n}$represents the rescaled running average $a_n$ $$\widetilde {a_n}=\frac{u\widetilde{a_{n-1}} +v{R_n}\times 2^8}{u+v}$$ $$a_n = \bigg\lfloor\frac{{\widetilde {a_n}}+2^7}{2^8}\bigg\rfloor$$