БлогNot. Считаем арифметическое среднее "на лету"

Считаем арифметическое среднее "на лету"

Допустим, нам нужно выводить текущее арифметическое среднее в процессе расчёта, а не просто по завершении цикла поделить найденную в цикле сумму значений на их количество.

Проблема встречается довольно часто, увы, некоторые личности, особенно студенческие, с упорством дятлов делают в цикле расчёт вида

среднее = среднее + значение / количество

а то и

среднее = (среднее + значение) / количество

Между тем, считать среднее "на лету" и прямо в цикле, конечно же, можно, но вот так (вариант 1):

среднее = (среднее*количество + значение) / (количество + 1)
вывод "среднее"
количество = количество + 1

с обычной инициализацией переменных до цикла:

среднее = 0
количество = 0

Разумеется, можно и просто "тянуть" в цикле 3 переменные кодом вида (вариант 2)

сумма = сумма + значение
количество = количество + 1
среднее = сумма / количество
вывод "среднее"

Однако, при программировании, скажем, микроконтроллера, лишний занятый регистр не есть хорошо.

Существенно и то, что при таком расчёте в длинном цикле мы вынуждены хранить в памяти большое значение суммы, а текущее среднее таким большим не будет. Правда, значение среднее*количество в первом варианте расчёта будет настолько же большим, но оно не хранится в регистре.

16.12.2017, 11:57 [3209 просмотров]


теги: учебное ошибка числа алгоритм

К этой статье пока нет комментариев, Ваш будет первым