#programowanie #cpp #algorytmy Mam sobie zmienną liczbową jakiegoś typu (np. long long). Opisuje ona średnią czasu w jakichś jednostkach (np. mikrosekundach), czyli np. została obliczona tak:
(1) x = (a + b + c)/3 lub tak:
(2) x = a/3 + b/3 + c/3 I teraz chcę uaktualnić tę średnią, ale znam tylko x i ilość liczb jaka została użyta przy obliczaniu; w tym wypadku 3. I teraz mogę to zrobić tak:
(3) x = (x + d/3)/2 lub tak:
(4) x = x/2 + (d/3)/2 Jeżeli dobrze myślę to używając sposobu (1) i (3), ryzykuję przekroczenie limitu dla danego typu danych, używając (2) i (4), tracę na dokładności, a sprawdzając za każdym razem czy mogę bezpiecznie użyć (1) i (3), tracę na wydajności. Czy mam rację?
W ogóle odkryłem kiedyś za pomocą magii matematyki że urodzilem się równo 9 miesięcy po tym jak powódź z 97' uderzyła w moje miasto. Jak widać nie tylko ono zostało wtedy zalane eh #wroclaw
Mam sobie zmienną liczbową jakiegoś typu (np. long long). Opisuje ona średnią czasu w jakichś jednostkach (np. mikrosekundach), czyli np. została obliczona tak:
(1) x = (a + b + c)/3lub tak:
(2) x = a/3 + b/3 + c/3I teraz chcę uaktualnić tę średnią, ale znam tylko x i ilość liczb jaka została użyta przy obliczaniu; w tym wypadku 3. I teraz mogę to zrobić tak:
(3) x = (x + d/3)/2lub tak:
(4) x = x/2 + (d/3)/2Jeżeli dobrze myślę to używając sposobu (1) i (3), ryzykuję przekroczenie limitu dla danego typu danych, używając (2) i (4), tracę na dokładności, a sprawdzając za każdym razem czy mogę bezpiecznie użyć (1) i (3), tracę na wydajności. Czy mam rację?
x = (x * 3 + d) / 4