2011-09-22 21 views
7

Sto cercando di creare un sistema di classificazione per gli utenti su un sito di gioco.Percentuale di vincita ponderata per numero di partite giocate

Il sistema deve essere basato su una percentuale di vincita ponderata con l'elemento ponderato come numero di partite giocate.

Per esempio:

55 vittorie e 2 sconfitte = 96% percentuale di vincita

1 vittoria e 0 perdite = 100% percentuale di vincita

Il primo record dovrebbe rango più elevato, perché hanno un più alto numero di vittorie. Sono sicuro che la matematica è semplicissima, non riesco a capirlo. Qualcuno può aiutare?

risposta

4

ELO è più approfondita perché considera la forza avversario quando segnando una vittoria o una perdita, ma se gli avversari sono abbinati in modo casuale un approccio semplice e molto effetto è:

WINS (+ costante * media Win% di tutti i giocatori)/(Vittorie + perdite + costante)

quindi con 0 giochi la formula è la media per tutti i giocatori, mentre aumenti il ​​numero di partite giocate la formula converge sul record attuale. La costante determina quanto velocemente lo fa e probabilmente puoi scappare scegliendo qualcosa tra 5 e 20.

-1

Sì, si tratta di "super semplice":

Percentage = Wins * 100.0/(Wins + Losses) 

per arrotondare ad un numero intero di solito si usa round o Math.round (ma non è stato specificato un linguaggio di programmazione).

Il valore potrebbe essere ponderati sul numero di vittorie, con il dato rapporto:

Rank = Wins * Wins/(Wins + Losses) 

Ma ci sono altri sistemi che capiscono meglio il problema, come Elo (vedi il mio commento).

+0

Hey, grazie per la risposta. Penso che sia la formula di base per la percentuale di vincita, ma non tiene conto dell'elemento ponderato. 1 * 100/1 = 100 e quindi superiore al primo record.Forse la mia unità di classifica finale non dovrebbe essere una percentuale per questo, ma un numero intero che mi viene in mente attraverso qualche processo? –

+0

Beh, cosa si può considerare un peso? Il numero di partite giocate non sarebbe stato, dal momento che ciò si riflette già nella percentuale di vittorie-sconfitte nella mia risposta. Direi che un peso migliore sarebbe il livello di abilità degli avversari contro cui il giocatore ha giocato (ad esempio, un rapporto vincita-perdita). Ma questo problema è già risolto, ad esempio, nel sistema di classificazione Elo (fai una ricerca sul Web per quel termine). –

+0

Certo, controllerò l'Elo. Ho visto RPI e BCS anche come esempi sportivi. Immagino che farò qualche altra riflessione su come e perché voglio farlo e tornare da te. Grazie per l'aiuto. –

0

Un'altra possibilità sarebbe la mia risposta a How should I order these “helpful” scores?. Fondamentalmente, usa il numero di vittorie per determinare l'intervallo di probabilità possibili per la probabilità che il giocatore vinca una partita, quindi prendi l'estremità inferiore. Questo fa battere il 55-2 1-0 per qualsiasi ragionevole scelta del livello di confidenza. (Mancanza di una ragione per fare altrimenti, suggerirei di impostarla al 50% - vedi il post per i dettagli, che sono in realtà molto semplici.)

Come piccolo tecnico a parte: ho visto alcuni suggerimenti per usa l'intervallo Wald piuttosto che Agresti-Coull. Praticamente, danno gli stessi risultati per grandi input. Ma ci sono buone ragioni per preferire Agresti-Coull se il numero di giochi potrebbe essere piccolo. (A proposito, ho avuto questa idea da solo — ma sicuramente non ero il primo — e solo successivamente ho scoperto che era piuttosto standard.)

0

Come su punteggio = (punti per vincita) * (numero di vittorie) + (punti per perdita) * (numero di perdite), dove i punti per vincita sono un numero positivo e i punti per perdita sono un numero negativo, scelto per funzionare bene per l'applicazione.