2013-10-01 2 views
3

Допустим, у меня есть список двойников:
Определить большие различия в отсортированном списке

0.0015 
0.0016 
0.0017 
0.0019 
0.0021 
0.0022 
0.0029 
0.0030 
0.0033 
0.0036 

И, очевидно, большая разница в 0,0022 и 0,0029 по сравнению с остальными, но есть способ, я могу сделать моя программа C#, чтобы иметь возможность заметить эту разницу в отсортированном списке W/O с использованием статического порогового значения. Поскольку эти данные, которые я получаю, разница не всегда может быть 0,0007 разница. Поэтому я бы предпочел, чтобы моя программа была достаточно «умной», чтобы идентифицировать эти «большие» различия и разделить этот список на несколько списков.

+4

Угадайте, что вы можете рассчитать разницу _average_ или _median_ (до вас) и сообщить обо всех отличиях выше этих. (или вы можете сообщить обо всех различиях, которые, как говорят представители, относятся к 25-ти процентам) –

ответ

3

если я понял ваш вопрос правильно здесь. Вам может понадобиться заполнить несколько пробелов, но вы получите дрейф с на примере ниже:

List<double> doubleList = new List<double>{ 
    0.0015, 
    0.0016, 
    0.0017, 
    0.0019, 
    0.0021, 
    0.0022, 
    0.0029, 
    0.0030, 
    0.0033, 
    0.0036 
}; 

double averageDistance = 0.0; 
double totals = 0.0; 
double distance = 0.0; 

for (int x = 0; x < (doubleList.Count - 1); x++) 
{ 
    distance = doubleList[x] - doubleList[x + 1]; 
    totals += Math.Abs(distance); 
} 

averageDistance = totals/doubleList.Count; 

// check to see if any distance between numbers is more than the average in the list 
for (int x = 0; x < (doubleList.Count - 1); x++) 
{ 
    distance = doubleList[x] - doubleList[x + 1]; 
    if (distance > averageDistance) 
    { 
     // this is where you have a gap that you want to do some split (etc) 
    } 
} 
+0

Большое вам спасибо, я думаю, теперь понимаю. Не знаю, почему я об этом не думал. Мозг не может функционировать очень хорошо, когда я продолжаю застревать. Спасибо чувак! –

1

Вычислить среднее среднее (http://en.wikipedia.org/wiki/Arithmetic_mean) и стандартное отклонение (http://en.wikipedia.org/wiki/Standard_deviation). Используйте их для определения значений, которые выходят за пределы стандартных отклонений «n».

Другим подходом было бы рассчитать все различия между последовательными значениями, отсортировать их (спускаться) и предположить, что верхние «m»% этих значений различий представляют наибольшие изменения.

Смежные вопросы