Вопрос

Я пытаюсь придумать способ расчета ранга.Сейчас просто принимается соотношение выигрышей/проигрышей каждой отдельной записи, например.один выиграл 99 раз из 100, его рейтинг выигрыша составляет 99%.НО, если работа набрала 1 голос из 1, она будет иметь 100% рейтинг победы, но определенно не может быть выше, чем у той, которая выиграла 99 раз.Что было бы лучшим способом сделать это?

Это было полезно?

Решение

В зависимости от того, насколько сложным вы хотите это сделать, шахматная система Эло (или что-то подобное) может быть тем, что вам нужно: http://en.wikipedia.org/wiki/Elo_rating_system

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

Другие советы

Попробуйте что-то вроде этого:

votes = wins + losses
score = votes * ( wins / votes )

Таким образом, что-то с 50% побед, но с миллионом голосов, все равно будет опережать что-то со 100% побед, но только с одним голосом.

Вы также можете добавить дополнительный вес в зависимости от возраста (в этом примере в днях), что-то вроде

if age < 5:
    score = score + ((highest real score on site) * ((5 - age) / 5)

Это поместит новые записи прямо вверху первой страницы, а затем они будут медленно перемещаться вниз по списку в течение следующих 5 дней (я предполагаю, что возраст — это дробное число, а не просто целое число).По истечении 5 дней они будут добавлены в список исключительно на основе оценки предыдущего фрагмента псевдокода.

Вы всегда можете использовать систему очков, а не соотношение выигрышей/проигрышей.Победа всегда будет приносить очки, а затем вы можете поиграть, либо удаляя очки за проигрыш, либо вообще не начисляя очки за проигрыш, либо начисляя меньше очков за проигрыш.Все зависит от того, как именно вы хотите, чтобы люди оценивались.Например, вы можете захотеть дать 2 очка за победу и 1 очко за поражение, если хотите отдать предпочтение людям, которые участвуют, а не тем, кто не участвует (что похоже на то, о чем вы говорили в своем примере с человеком, играющим 100 игр против 1 игра).НХЛ использует аналогичную методику ранжирования (2 очка за победу, 1 очко за поражение в овертайме, 0 очков за обычное поражение).Это может дать вам больше гибкости.

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

Имеет ли смысл повышать рейтинг выигравшей записи, если проигравшая запись изначально имела гораздо более высокий рейтинг, напримергораздо более сильный конкурент?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top