Ответ 1
Вы должны знать количество тестов в исходном наборе и в среднем по старению:
newAve = ((oldAve*oldNumPoints) + x)/(oldNumPoints+1)
Скажем, мы вычисляем средние значения тестов:
Запуск тестов: 75, 80, 92, 64, 83, 99, 79
Среднее value = 572/7 = 81,714...
Теперь, учитывая 81.714, существует ли способ добавить новый набор тестов для "расширения" этого среднего, если вы не знаете начальные баллы теста?
Новые результаты тестов: 66, 89, 71
Среднее value = 226/3 = 75.333...
Нормальное среднее значение: 798/10 = 79,8
Я пробовал:
Avg = (OldAvg + sumOfNewScores) / (numOfNewScores + 1)
(81.714 + 226) / (3 + 1) = 76.9285
Avg = (OldAvg + NewAvg) / 2
(81.714 + 79.8) / 2 = 80.77
И ни один из них не подходит к точному среднему значению, которое должно "быть". Возможно ли это математически, если вы не знаете начальные значения?
Вы должны знать количество тестов в исходном наборе и в среднем по старению:
newAve = ((oldAve*oldNumPoints) + x)/(oldNumPoints+1)
Скажем, у вас есть 2 блока баллов:
1st: n scores with average = a1
2nd: m scores with average = a2
тогда среднее значение общих баллов равно:
a1*(1.0*n/(m+n))+a2*(1.0*m/(m+n))
Если вы хотите просто добавить 1 балл (a2) к существующей формуле набора, будет
a1*(n/(n+1))+ a2/(n+1)
Стандартным подходом является сохранение счета и суммы значений.
Они могут быть легко обновлены, и из них среднее значение может быть вычислено без потери точности.