2010-01-22 23 views
6

Estoy tratando de encontrar nuestra forma de calcular el rango. En este momento, simplemente toma la proporción de ganancias/pérdidas de cada entrada individual, por ejemplo, uno ganó 99 veces de un 100, tiene un 99% de rango ganador. PERO si una entrada ganó 1 de un total de 1 votos, tendrá un rango de 100% de ganancia, pero definitivamente no puede ser más alta que la que ganó 99 veces. ¿Cuál sería una mejor manera de hacer esto?Algoritmo de votación: cómo calcular el rango?

+0

PD Lo único que se me ocurre es corregir el rango basado en el "vencimiento" de una entrada (cuántas veces fue total en el concurso). Por otro lado, este enfoque prohibiría que todas las nuevas entradas obtengan los primeros puestos solo porque no son nuevas porque no obtienen los votos principales (hasta que "maduren" y el rango ya no esté ajustado) –

Respuesta

5

Dependiendo de lo complicado que desea hacerlo, los usos de ajedrez sistema Elo (o algo similar) pueden ser lo que quiere: http://en.wikipedia.org/wiki/Elo_rating_system

Incluso si una persona ha ganado 1/1 partidos, la clasificación sería muy por debajo de alguien que ha ganado/perdido cientos de partidos contra oponentes difíciles, por ejemplo.

+0

Gracias, excelente recurso. –

0

si entiendo la pregunta correctamente, entonces quien obtenga más votos tiene el rango más alto.

+0

No, mira mi comentario a dball917 arriba –

+0

también podría usar algo como esto para obtener un puntaje%: puntuación = (ganar/(ganar + perdido)) * 100 – infinitloop

1

Siempre se puede usar un sistema de puntos en lugar de una relación de ganancia/pérdida. Ganar siempre daría puntos y luego podría jugar eliminando puntos por perder, no otorgando puntos por perder o otorgando menos puntos por perder. Todo depende exactamente de cómo quieres que se clasifique a las personas. Por ejemplo, es posible que desee otorgar 2 puntos por ganar y 1 punto por perder si desea favorecer a las personas que participan sobre las que no (lo que suena como lo que estaba hablando en su ejemplo de la persona que juega 100 partidos vs. 1 juego). La NHL usa una técnica similar para las clasificaciones (2 puntos por una victoria, 1 punto por una pérdida de tiempo extra, 0 puntos por una pérdida regular). Eso podría darte más flexibilidad.

+1

De esta manera, las entradas nuevas y mejores NUNCA podrán ponerse al día con las anteriores si usamos puntos. Siempre tendrán un retraso incluso si su proporción de victorias/pérdidas es mayor. –

+0

Sí, como dije, depende de lo que quieras hacer. La publicación parecía indicar que quería favorecer a las personas con más juegos jugados. – dball917

0

¿Tendría sentido agregar más rango a la entrada ganadora si perder la entrada originalmente tenía un rango mucho más alto, p. competidor mucho más fuerte?

6

intentar algo como esto:

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

De esa manera, algo con el 50% gana, pero un millón de votos todavía estarían por delante de algo con el 100% de victorias, pero sólo un voto.

Usted puede agregar en un peso adicional en función de la edad (en días en este ejemplo), también, algo así como

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

Esto pondrá nuevas entradas a la derecha en la parte superior de la primera página, y luego se moverán lentamente hacia abajo en la lista en el transcurso de los próximos 5 días (supongo que la edad es un número fraccionario, no solo un número entero). Después de que hayan transcurrido los 5 días, se incluirán en la lista basándose únicamente en el puntaje del bit de pseudocódigo anterior.

+1

Creo que meen puntuación = votos * (gana/pierde) – assaqqaf

Cuestiones relacionadas