laufender mittelwert
-
hallo,
ich muss für eine liste von 1000000 werte (ganzzahlen 0-50000) den mittelwert
berechnen. muss ich dafür alle werte in ein array speichern, oder gibt es eine möglichkeit den mittelwert laufend zu berechnen? also die zahlen danach gleich verwerfen und nur mit der neuen zahl und den alten mittelwert den neuen mittelwert ausrechnen?mfg
-
^^einfach alle werte aufsummieren und die anzahl mitzählen. wenn du den mittelwert brauchst, nimmste die summe und teilst sie durch den zähler.
-
edit, oder besser so:
mittelwert_neu = mittelwert_bisher - (mittelwert_bisher - neuer_wert)/anzahl_werte
-
danke, die formel funktioniert wunderbar (wirklich nachvollziehen kann ich das aber nicht).
Leider scheint es in meinem code dennoch ein problem zu geben:
als mean wird -1.#IND00 ausgegeben.int main() { unsigned us; unsigned num=0; float mean=0; while(scanf("%ui",&us)!=EOF) mean-=(mean-us)/num++; printf("%f",mean); return 0; }
-
wweil du im ersten loop durch null dividierst, bekommst du ne ungültige zahl, setz die plusse mal vor das num, oder initilaisier es mit 1
-
danke, jetzt gehts