Стандартное отклонение

Опубликовано в QLua

-- Стандартное отклонение переданных функции параметров
-- Также возвращаем среднее арифметическое function math.stdev(...)
   local sum = 0
   local average = math.average(...)
   local delta
   local n = select("#",...)

   for i = 1, n do
      delta = average - select(i,...)
      sum = sum + (delta * delta)
   end
   return math.sqrt(sum / n), average
end

-- Возвращает среднее арифметическое переданных функции значений
function math.average(...)
   return math.sum(...) / select("#", ...)
end
-- Возвращает сумму переданных функции значений
function math.sum(...)
   local sum = 0
   for i = 1, select("#", ...) do
      sum = sum + select(i,...)
   end
   return sum
end

Комментарии   

# admin 27.02.2014 02:07
Элегантный, но затратный рекурсивный вариант.

function math.sum(a, ...)
return a and a + math.sum(...) or 0
end

Который, к тому, же, возвращает 0 при отсутствии параметров ( а должен вернуть nil)

Недостаточно прав для комментирования

Архив QLua