Avatar billede jakobdo Ekspert
11. februar 2005 - 11:06 Der er 5 kommentarer og
1 løsning

Måde at udregne rank.

Jeg er igang med at udvikle et system til at håndtere statistik over fodbold kampe (bordfodbold)
Og i den forbindelse vil jeg gerne lave et rank system.
Nogle som har en god ide til hvordan dette skal laves?

Det som jeg vil undgå er at spiller1 tæver spiller2 (som er dårlig) 10 gange dagligt!
Og spiller1 ligger på første pladsen fra dag et.

Så man skal få flere point for at tæve en højere rangerende, end omvendt.

Jeg har tænkt så langt at:

Vinder får man 1 point.
Taber, mister man 1 point.
Vindes der 10-0 får man 2 point.
Tabes der 10-0 mister man 2 point.

Og min database struktur er beskrevet her:
http://www.eksperten.dk/spm/589749
Avatar billede Slettet bruger
13. februar 2005 - 00:13 #1
Du kan overveje at lavet et system, hvor hver spiller har en rating, der benyttes til at udregne, hvor mange point en sejr giver. F.eks. forestil dig, at enhver ny spiller starter med en rating på 1000.

Så skal du have en formel til at bestemme, hvor meget man stiger eller falder. Noget i denne stil kunne bruges.

//eksisterende rating på de to spillere
$vinder_rating=1500;
$taber_rating=1000;

$skala=$taber_rating/$vinder_rating;
$flytpoint=100*$skala;

$vinder_nyrating=$vinder_rating+$flytpoint;
$taber_nyrating=$taber_rating-$flytpoint;

På denne måde vil den totale sum af ratings være konstant, og det vil give flere point at slå en modstander, der er bedre end dig selv. Hvis en meget højtplaceret spiller slår en meget lavtplaceret spiller, giver det nærmest ingen point.

Tilsvarende kunne man lave en udregning, der også flytter lidt point ved uafgjort:

$spiller1_rating = 1500;
$spiller2_rating = 1000;

$skala=($
Avatar billede arne_v Ekspert
13. februar 2005 - 00:17 #2
Nogen der spiller skak hvad ?

:-)
Avatar billede Slettet bruger
13. februar 2005 - 00:25 #3
Hov, der kom jeg til at ramme send-knappen. Jeg fortsætter lige:

$skala=($spiller1_rating>$spiller2_rating)?$spiller2_rating/$spiller1_rating:$spiller1_rating/$spiller2_rating;

$forskel=abs($spiller1_rating-$spiller2_rating);
$flytpoint=10*$skala;

if($flytpoint>$forskel/2){
  $flytpoint=$forskel/2;
}

if($spiller1_rating>$spiller2_rating){
  $spiller1_rating-=$flytpoint;
  $spiller2_rating+=$flytpoint;
} else {
  $spiller2_rating-=$flytpoint;
  $spiller1_rating+=$flytpoint;
}
Avatar billede Slettet bruger
13. februar 2005 - 00:27 #4
arne_v: Nej faktisk ikke. Selve grundideen har jeg fra noget jeg engang læste om hvordan det blev gjort i Magic: The Gathering-turneringer, men jeg kunne desværre ikke lige finde de præcise formler. Det skulle ikke undre mig, hvis Wizards ratingsystem er kraftigt inspireret fra skak.
Avatar billede jakobdo Ekspert
14. februar 2005 - 08:44 #5
Sandbox jeg takker for input, smid er svar.
Avatar billede Slettet bruger
14. februar 2005 - 09:37 #6
Kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester