Existe alguma maneira de encontrar a média aritmética “melhor” do que a soma () / N?

Suponha que tenhamos números N (inteiros, flutuantes, o que você quiser) e queremos encontrar sua média aritmética. O método mais simples é somar todos os valores e dividir pelo número de valores:

def simple_mean(array[N]): # pseudocode
    sum = 0
    for i = 1 to N
       sum += array[i]
    return sum / N

Ele funciona bem, mas requer números inteiros grandes. Se não queremos inteiros grandes e estamos bem com erros de arredondamento, e N é o poder de dois, podemos usar 'dividir e conquistar':((a+b)/2 + (c+d)/2)/2 = (a+b+c+d)/4, ((a+b+c+d)/4 + (e+f+g+h)/4)/2 = (a+b+c+d+e+f+g+h)/8, em breve.

def bisection_average(array[N]):
   if N == 1: return array[1]
   return (bisection_average(array[:N/2])+bisection_average(array[N/2:]))/2

Alguma outra maneira?

PS.playground para preguiçoso

questionAnswers(6)

yourAnswerToTheQuestion