Voici encore une autre réponse offrant des commentaires sur la façon dont la réponse de Muis , Abdullah Al-Ageel et Flip est mathématiquement la même chose sauf écrite différemment.
Bien sûr, nous avons l' analyse de José Manuel Ramos expliquant comment les erreurs d'arrondi affectent chacune légèrement différemment, mais cela dépend de l'implémentation et changerait en fonction de la façon dont chaque réponse était appliquée au code.
Il y a cependant une assez grande différence
Il est dans Muis 's N, flip ' s k, et Abdullah Al-Ageel de n. Abdullah Al-Ageel n'explique pas tout à fait ce qui ndevrait être, mais Net kdiffère en cela Nest " le nombre d'échantillons sur lesquels vous voulez faire la moyenne " tandis que kle nombre de valeurs échantillonnées. (Bien que je doute de N l' exactitude de l' appel du nombre d'échantillons .)
Et nous arrivons ici à la réponse ci-dessous. C'est essentiellement la même vieille moyenne mobile pondérée exponentielle que les autres, donc si vous cherchez une alternative, arrêtez-vous ici.
Moyenne mobile pondérée exponentielle
Initialement:
average = 0
counter = 0
Pour chaque valeur:
counter += 1
average = average + (value - average) / min(counter, FACTOR)
La différence est la min(counter, FACTOR)partie. C'est la même chose que de dire min(Flip's k, Muis's N).
FACTORest une constante qui affecte la rapidité avec laquelle la moyenne «rattrape» la dernière tendance. Plus petit est le nombre, plus vite. (À 1ce n'est plus une moyenne et devient juste la dernière valeur.)
Cette réponse nécessite le compteur en cours d'exécution counter. En cas de problème, le min(counter, FACTOR)peut être remplacé par juste FACTOR, ce qui en fait la réponse de Muis . Le problème avec cela est que la moyenne mobile est affectée par tout ce qui averageest initialisé. S'il a été initialisé à 0, ce zéro peut prendre beaucoup de temps pour sortir de la moyenne.
Comment ça finit par ressembler
