Rating-ul infoarena

Sistemul de rating infoarena ofera un mod de a ordona si diferentia utilizatorii in functie de performantele acestora in regim de concurs. Rating-urile se calculeaza folosind elemente de statistica si probabilitati.

Este important de retinut ca rating-ul unui utilizator se actualizeaza doar dupa finalizarea unui concurs organizat pe infoarena. Activitatea de pregatire din arhiva de probleme nu influenteaza rating-ul.

La ce serveste?

Sistemul de rating ideal ne-ar permite sa afirmam care dintre doi concurenti este mai puternic. Evident, acest sistem ideal nu exista (chiar notiunea de mai puternic este discutabila), totusi putem aproxima unul.

Rating-ul infoarena te ajuta sa...

  • iti urmaresti evolutia personala in regim de concurs
  • iti raportezi performantele la ceilalti utilizatori infoarena

Cum imi cresc rating-ul?

Participa la concursurile infoarena si rezolva cat mai multe probleme. Tu iti vezi de treaba si rating-ul te urmareste :)

Cum se calculeaza?

infoarena foloseste un sistem de rating relativ standard numit Glicko, adaptat la nevoile noastre.

Glicko este un sistem de rating folosit in campionatele de sah, o varianta imbunatatita a algoritmului larg acceptat ELO.

Distributie

Imaginile trebuie neaparat sa fie atasamente ale unei pagini.

Din grafic se observa ca rating-urile infoarena aproximeaza distributia normala - Gauss. Desi asta nu dovedeste nimic in particular, e un semn bun ca algoritmul functioneaza :)

Detalii despre implementare

Vezi direct codul sursa al implementarii noastre de Glicko.
Fata de algoritmul standard Glicko, am modificat urmatoarele:

  • Glicko a fost inventat pentru jocuri de sah (sau, mai general, jocuri head-to-head) insa concursurile de informatica includ mai multi participanti. Astfel, consideram fiecare pereche de concurenti ca un joc head-to-head.
  • Functia care calculeaza scorul probabil (expected value) normalizeaza diferentele de rating mai mari decat IA_RATING_MAX_DIFF
  • Glicko acorda 0 pentru infrangere, 1/2 pentru remiza si 1 pentru victorie. Am facut o functie care acorda un numar real din intervalul [0, 1] in functie de deviatia standard. Astfel, acordam un numar real in intervalul [0, 1/2) pentru o infrangere, 1/2 pentru o remiza, respectiv un numar in intervalul (1/2, 1] pentru o victorie.