Как рассчитать процентиль или ранжирование значения в коллекции? - PullRequest
1 голос
/ 05 февраля 2012

У меня есть коллекция из примерно 8000 результатов тестов в файле XML.Используя Linq и C #, это один из наиболее эффективных способов вычисления процентиля определенного теста.

Мой акцент сделан на эффективность .Итак, каков рекомендуемый подход?Я также ищу соответствующие встроенные функции Linq или C #, рекомендованные для этого расчета.Есть что-то под названием Percentile () или TopPercent?

1 Ответ

7 голосов
/ 05 февраля 2012

Похоже, вы беспокоитесь об эффективности, прежде чем убедитесь, что вам нужно , чтобы беспокоиться об этом.

Я бы выбрал следующий подход:

  • Загрузка файла XML в память с помощью LINQ to XML (как простейшего XML API в .NET)
  • Преобразование результатов в список целых чисел (или любого другого типа оценки)
  • Теперь вы можете легко узнать общее количество
  • Используйте Count с предикатом, чтобы узнать, сколько баллов меньше вашего "целевого" балла

Если вам нужночтобы проверить несколько баллов, вам, очевидно, только необходимо повторить последний шаг.

My first попытка оптимизировать это (для нескольких проверок) будет состоять в сортировке списка,так что вы можете просто выполнить бинарный поиск, чтобы найти ранг каждой оценки.Я бы только пошел , что далеко после бенчмаркинга.

...