Найти среднеквадратичную ошибку среднего арифметического

Дан список из 20 элементов, созданный при помощи
my_list = [(lambda x  :  (x*87+12)%100)(i) for i in range(20)]
доставая из него значения при помощи операции
x = my_list.pop()
и проверяя длину оставшегося списка через len(my_list), надо найти среднеквадратическое отклонение (среднеквадратичную ошибку среднего арифметического) при помощи однопроходного алгоритма ("среднеквадратическое отклонение" и "стандартное отклонение" отличаются друг от друга.) Ответ необходимо дать с точностью до пятого знака после запятой.
2 ответа

Если требуется строго один проход именно по my_list, то это возможно, путём копирования значений в другой список. А если в принципе, то от второго прохода не избавишься. В первом получаем среднее арифметическое, во втором - собираем квадраты разностей.


[(lambda x : (x*87+12)%100)(i) for i in range(20)]
Зачем lambda?
А если в принципе, то от второго прохода не избавишься.
Решение по математике:Соответственно код
import math
my_list = [(i*87+12) % 100 for i in range(20)]
Sx = 0
Sx2 = 0
n = len(my_list)
while (len(my_list) != 0):
    x = my_list.pop()
    Sx = Sx + x
    Sx2 = Sx2 + x * x
print(round(math.sqrt(Sx2 / n - Sx * Sx / n / n), 5)))