Алгоритм голосования: как рассчитать рейтинг? - PullRequest
6 голосов
/ 22 января 2010

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

Ответы [ 5 ]

6 голосов
/ 22 января 2010

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

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

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

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

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

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

5 голосов
/ 22 января 2010

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

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

1 голос
/ 22 января 2010

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

0 голосов
/ 22 января 2010

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

0 голосов
/ 22 января 2010

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

...