Эмпирическое правило:
1), Если выбор конкретного типа сделан во время компиляции, предпочтите шаблон. Это будет более безопасно (ошибки времени компиляции по сравнению с ошибками периода выполнения) и вероятно лучше оптимизированный. 2), Если выбор сделан во времени выполнения (т.е. в результате действия пользователя) нет действительно никакого выбора - наследование использования и виртуальные функции.
Во-первых, я бы не стал использовать стандартное отклонение, если в ваших массивах данных всего несколько записей. Используйте более надежные статистические меры, такие как среднее абсолютное отклонение (MAD), также вы можете захотеть протестировать с использованием медианы вместо среднего.
Это связано с тем, что, если ваше «знание» ставок игроков ограничено всего несколько образцов, в ваших данных будут преобладать выбросы, т. е. удачливый / неудачливый игрок. Статистические средства могут быть совершенно неприемлемыми в этих обстоятельствах, и вы можете использовать какую-либо форму эвристического подхода.
Я также предполагаю, исходя из ваших ссылок, что вы на самом деле не собираетесь выбирать лучшего игрока, а скорее на основе следующих игроков набор ответов «A» хочу предсказать правильный набор ответов «C» путем взвешивания «A» основываясь на предыдущем послужном списке игроков.
Конечно, если бы было хорошее решение этой проблемы, вы могли бы убить на фондовом рынке ;-) (Тот факт, что никто не делает этого, должен указывать на то, что к существованию такого решения).
Но вернемся к ранжированию игроков. Ваша основная проблема в том, что вы (должны?) Считать процент правильных ответов равномерно распределенным от 0 до 100%. Если тест содержит несколько вопросов, это, конечно, не так. Я бы посмотрел, какие баллы получает совершенно случайный игрок «R» в тесте, и построил бы показатель относительной уверенности, основываясь на том, насколько лучше / хуже, чем «R» данный реальный игрок.
Скажем, для каждого раунда игры игра генерирует миллион случайных игроков и смотрит на распределение очков. Используйте распределение как весовой коэффициент для реальных результатов игроков.
Хм. Это сделало бы (100,100,100,60) игрока хуже, чем (85,85,85,85) игрока. Почему бы также не принять во внимание% от общего количества баллов?
Например: процент от общего количества баллов (например, 0..1), умноженный на ваш текущий расчет.
Подходит ли формула байесовской вероятности всем требованиям?
Я думаю, что да. Вот ссылка на другой сайт, который немного менее математичен по этому поводу: http://www.experiment-resources.com/bayesian-probability.html
По сути, вы предсказываете вероятность того, что каждый игрок забьет самый высокий в следующем раунде. Это то, что байесовские вероятности едят на завтрак.
Байесовские вероятности уже используются в видеоиграх (предупреждение: файл .doc) для определения подобных вещей.
Вы не сможете получить оптимальную формулу, если не определите количественно, что лучше. Вам нужно выяснить, как вы хотите сопоставить согласованность со средним значением. Например, один из вариантов - оценить счет, который игрок наберет в заданном проценте игр. Для этого нужна какая-то модель распределения вероятностей очков игроков. Например, если мы предположим, что очки игроков соответствуют нормальному распределению, то данная формула вычисляет, какой результат игрок превзойдет примерно в 70% случаев.
Рассматривали ли вы просто использование медианы? Он считается более надежным статистическим (менее подверженным выбросам), чем среднее значение. В ваших данных вы получаете медианы: 0, 25, 50, 82,5, 50, 50, 100.
Кажется, это то, что вы интуитивно хотите? Я согласен с другими, что здесь нет "правильного ответа".
Думаю, вы правы в том, что вам нужна какая-то линейная комбинация двух факторов, но я думаю, что нам нужно больше узнать о том, что вы делаете, чтобы знать, какими будут фактические константы ...
Ну, «простое расширение» - это просто добавление веса и границ:
средний (игрок) - мин (верхний, вес * энтрофия (игрок))
Однако, учитывая текущий набор данных, меня может не волновать «процент правильных ответов», а просто смотреть на разницу в счете за игру , если это возможно.
Проверьте http://blog.stackoverflow.com/2009/10 / alternate-sorting-orders /
Приведенная здесь формула предназначена для сортировки голосований, но если вы считаете, что оценка похожа на голосование (0 или что угодно), вы сможете использовать ее, чтобы вычислить, какие игроки набирают больше очков выше.