Aqui está outra resposta que oferece comentários sobre como a resposta de Muis , Abdullah Al-Ageel e Flip são matematicamente a mesma coisa exceto que escritas de forma diferente.
Claro, temos José Manuel Ramos a análise de explicando como os erros de arredondamento afetam cada um de maneira ligeiramente diferente, mas isso depende da implementação e mudaria com base em como cada resposta foi aplicada ao código.
No entanto, há uma grande diferença
Está no Muis 's N, Flip 's ke Abdullah Al-Ageel 's n. Abdullah Al-Ageel não chega a explicar o que ndeveria ser, mas Ne kdiferem em que Né " o número de amostras em que deseja média ao longo ", enquanto ké a contagem de valores amostrados. (Embora eu tenha dúvidas se ligar para N o número de amostras é preciso.)
E aqui chegamos à resposta abaixo. É essencialmente a mesma velha média móvel exponencial ponderada dos outros, então, se você estiver procurando por uma alternativa, pare aqui.
Média móvel exponencial ponderada
Inicialmente:
average = 0
counter = 0
Para cada valor:
counter += 1
average = average + (value - average) / min(counter, FACTOR)
A diferença é a min(counter, FACTOR)parte. Isso é o mesmo que dizer min(Flip's k, Muis's N).
FACTORé uma constante que afeta a rapidez com que a média "alcança" a tendência mais recente. Quanto menor o número, mais rápido. (Em 1não é mais uma média e apenas se torna o valor mais recente).
Esta resposta requer o contador em execução counter. Se for problemático, o min(counter, FACTOR)pode ser substituído por just FACTOR, transformando-o na resposta de Muis . O problema em fazer isso é que a média móvel é afetada por tudo o que averageé inicializado. Se foi inicializado para0 , esse zero pode levar muito tempo para sair da média.
Como fica parecendo
