Disons que ce tableau est le nombre de pressions que j'ai réalisées chaque jour au cours des 28 derniers jours:
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Comme vous pouvez le voir, il y a eu une forte tendance à la hausse la semaine dernière, et c'est la partie de ces données qui m'intéresse le plus. Plus loin dans le passé, moins je veux que ces données figurent dans ma moyenne 'nombre de presses.
À cette fin, je veux établir une «moyenne» où chaque semaine vaut plus que la semaine précédente.
Les informations générales ne font pas partie de ce problème.
Moyenne normale:
La somme de toutes les valeurs / le nombre de valeurs
Pour ci-dessus:
1440/28 = 51,42857142857143
Moyenne pondérée:
Divisez le tableau en 4 groupes de 7 et démarrez un nouveau tableau.
- Ajoutez le premier groupe au tableau.
- Ajoutez le deuxième groupe au tableau deux fois.
- Ajoutez le troisième groupe au tableau trois fois.
- Ajoutez le quatrième groupe au tableau quatre fois.
Additionnez tout le nouveau tableau et divisez par la longueur du nouveau tableau.
Pour ci-dessus:
Convertissez le tableau en ceci:
[
20,20,20,30,30,30,30, # first week once
35,35,40,40,40,45,45,
35,35,40,40,40,45,45, # second week twice
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50, # third week thrice
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120 # Fourth week four times
]
Exécutez ensuite une moyenne normale sur ce tableau.
4310/70 = 61,57142857142857
Notez qu'il est supérieur à la valeur moyenne normale en raison de la tendance à la hausse de la semaine dernière.
Les règles:
- L'entrée est un tableau plat de 28 entiers non négatifs.
- N'importe quelle langue dans laquelle vous souhaitez écrire.
- Sortez un nombre.
- J'aime toujours voir les liens TIO .
- Essayez de résoudre le problème dans le plus petit nombre d'octets.
- Le résultat doit être une décimale précise à au moins 4 décimales (tronquée ou arrondie à partir des valeurs du scénario de test est très bien) ou une fraction exacte.
Cas de test:
Cas 1: tendance à la hausse
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Moyenne normale: 51,42857142857143 Moyenne pondérée: 61,57142857142857
Cas 2: Laisser l'accalmie derrière
(J'ai eu une mauvaise semaine, mais c'était il y a longtemps)
[
50,50,50,50,50,50,50,
10,10,10,10,10,10,10,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50
]
Moyenne normale: 40 Moyenne pondérée: 42
Cas 3: abandonner
J'ai eu une mauvaise semaine, ça fait baisser ma moyenne rapidement.
[
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
10,10,10,10,10,10,10
]
Moyenne normale: 40 Moyenne pondérée: 34
Cas 4: Moyenne sur
D'accord, donc je joue juste ici, je pensais que ce pourrait être la même valeur pour les moyennes normales et pondérées, mais, bien sûr, ce n'était pas le cas.
[
60,60,60,60,60,60,60,
30,30,30,30,30,30,30,
20,20,20,20,20,20,20,
15,15,15,15,15,15,15
]
Moyenne normale: 31,25 Moyenne pondérée: 24,0
Problème bonus:
Quelle combinaison de 28 valeurs aurait la même moyenne normale et la même moyenne pondérée?
Bon golf!
new_avg = α*weekly_sum + (1-α)*old_avg
pour certainsα∈(0,1)
0
des tractions tous les jours, donc ma moyenne pondérée est la même que ma moyenne normale.