Вычислите среднее число, не будучи брошенным отклоняется

Я пытаюсь вычислить среднее число, не будучи отброшенным маленьким набором далеких чисел (т.е., 1,2,1,2,3,4,50), единственные 50 отбросят все среднее число.

Если у меня есть список чисел как так:

19,20,21,21,22,30,60,60

Среднее число равняется 31

Медиана равняется 30

Режим равняется 21 и 60 (усредненный к 40,5)

Но любой видит, что большинство находится в диапазоне 19-22 (5 в, 3) и если Вы получаете среднее число просто главного диапазона, это 20.6 (большая разница, чем любое из чисел выше)

Я думаю, что можно получить это как так:

c+d-r

Где c количество числа, d отличные значения, и r диапазон. Затем можно применить это ко всем диапазонам possble, и самый высокий счет является диапазоном omptimal для получения среднего числа от.

Например, 19,20,21,21,22 были бы 5 чисел, 4 отличных значения, и диапазон равняется 3 (22 - 19). При включении этого в мое уравнение, Вы добираетесь 5+4-3=6

При применении этого ко всему списку числа, это было бы 8+6-41 =-27

Я думаю, что это работает довольно хорошее, но я должен создать огромный цикл для тестирования против всех возможных диапазонов. В просто моем небольшом примере существует 21 возможный диапазон:

19-19, 19-20, 19-21, 19-22, 19-30, 19-60, 20-20, 20-21, 20-22, 20-30, 20-60, 21-21, 21-22, 21-30, 21-60, 22-22, 22-30, 22-60, 30-30, 30-60, 60-60

Я задаюсь вопросом, существует ли более эффективный способ получить среднее число как это.

Или если у кого-то есть лучший алгоритм все вместе?

5
задан JD Isaacks 19 October 2010 в 19:16
поделиться