Vinci il codice di perdita che non fa registrare 1-0 meglio di uno come 20-3

5

ok, sto solo cercando un esempio di codice win loss. Questo può essere per qualsiasi lingua, volendo solo il contorno. Abbastanza nuovo per la programmazione, così da inventare per me:)

Posso fare (win-loss / total of win loss). Supponendo che sia un buon rapporto di perdita di vittorie, ma non voglio una nuova persona che abbia 1-0 per essere classificata più in alto di una che ha 20-3.

Qualsiasi aiuto è apprezzato e grazie.

EDIT:

Gli stili di scacchi sono un po 'più del necessario. Voglio solo un sistema di classificazione con vincita / perdita. quindi non dire che il 20-3 è in testa al campionato adesso. lui è, diciamo, 23 settimane in così lontano. se un tizio arriva e vince la prima partita contro qualcuno, non voglio che lui prenda il primo posto sulle persone che è stato lì più a lungo e ha un grande record di vittorie. Per rispondere ad un ampt ... forse sarà il migliore in campionato, ma non lo voglio subito perché ha avuto una buona partita. Non sono sicuro se questo chiarisca ancora. Non ho davvero seguito Doc fino in fondo. Sembra come se fosse ostacolato nella lista fino alla sua undicesima partita. Non sono sicuro se questo è quello che stai lì. Grazie ancora per tutti i solleciti.

    
posta user3130423 02.01.2014 - 23:01
fonte

5 risposte

10

link

La matematica è un po 'avanzata, ma l'idea è di calcolare un intervallo di confidenza per la percentuale di vincita, e quindi usare il limite inferiore per classificare.

Intervallo di confidenza del 95% per i tuoi esempi:

20-3: 0.68-0.95
 1-0: 0.21-1.00

Poiché il limite inferiore del 20-3 è più alto (0,68 contro 0,21), sarebbe più alto.

    
risposta data 09.01.2014 - 01:01
fonte
5

Ecco una soluzione molto semplice, non così sofisticata come i sistemi di valutazione degli scacchi suggeriti nei commenti, ma più facile da implementare: dividere il valore del punteggio corrente (win-loss)/(# of games played) di un "fattore di incertezza f", dove f è un alto valore se il numero totale di partite giocate è piccolo, e f converge a 1 più giochi ha giocato un giocatore. Ad esempio, puoi scegliere

f(k)=10-k 

dopo k giochi fino a k < 10 e

f(k)=1 if k>=10

Oppure, se vuoi raddoppiare la confidenza con ogni partita giocata, scegli

f(k) = 2^(5/k)

(il ^ significa qui "alla potenza di", traduci questo nel tuo linguaggio di programmazione preferito).

I valori 5 o 10 sono solo scelti arbitrariamente, che riflettono la sicurezza che si desidera assegnare a un giocatore dopo una partita e il punto in cui si desidera raggiungere (quasi) piena fiducia. Scegli i tuoi valori di conseguenza.

    
risposta data 02.01.2014 - 23:42
fonte
1

Just want a ranking system with win/loss. so lest say 20-3 is top in league right now. he is, say 23 weeks in so far. if one guy comes in and wins first match against anyone, I don't want him to take #1 spot over people thats been there longer and have a great winning record.

Se vuoi farlo in modo uniforme, tempera la frazione vincente con la quantità di partecipazione. Più giochi un giocatore gioca, più la sua frazione di vincita conta nelle classifiche.

Un giocatore stabilito con un record 20-3 (0,869) che ha giocato tutti i 23 (1.000) dei possibili giochi ha una classifica di 0,869 x 1.000 = 0,869. Non perde nulla a causa della sua alta partecipazione.

Un nuovo giocatore gioca una partita e vince (1,000) ma viene ridotta dal fatto che ha giocato solo uno dei 23 (0,043). La sua classifica è 1.000 x 0.043 = 0.043. Questo lo mette allo stesso livello di qualcuno che ha giocato tutti i 23 e ne ha vinto uno solo.

    
risposta data 03.01.2014 - 19:55
fonte
0

Una soluzione molto semplice è quella di fornire punti per ogni partita giocata, persa o vinta.

Punteggio = 3 * vinci + perdita

Un nuovo giocatore non comparirà nei primi tre posti fino a quando avrà un numero di corrispondenze paragonabile ad altri giocatori. Questo può essere buono o cattivo: se il numero di giochi non è vincolato, i nuovi giocatori potrebbero non avere alcuna possibilità pratica di arrivare in cima.

    
risposta data 03.01.2014 - 20:02
fonte
0

Dato che hai eliminato l'opzione collaudata di un sistema di classificazione in stile ELO, devi riesaminare le tue esigenze.

[if a player] wins first match against anyone, I don't want him to take #1 spot

... sembra riassumere meglio le cose. Suggerisce che un rapporto vincita / perdita grezzo sembra essere adeguato e che l'unico requisito è impedire ai nuovi giocatori di apparire nella classifica.

Per farlo devi solo avere un numero minimo di giochi.

Qualcosa come: -

winRatio = win / math.max(win + loss, minMatches)

... significherebbe che qualcuno dovrebbe vincere minMatches per ottenere quella percentuale di vincita del 100% e dopo molti giochi dovrebbero comunque iniziare a trovare il loro livello.

In ultima analisi, il sistema più equo per concorrenti senza pari è più lungo le linee ELO e troverai che alla fine vorrai che a meno che tutti i tuoi giocatori non siano eguagliati in modo uniforme - ti suggerirei il codice ora, inizia a usarlo in il backend e poi quando si lamentano che il sistema di punteggio è ancora ingiusto, puoi guardare in risposta alle richieste degli utenti quando in realtà sapevi che stava arrivando da sempre ... a volte il nostro gioco è tutto incentrato sulla percezione.

    
risposta data 06.07.2015 - 18:14
fonte

Leggi altre domande sui tag