kecske123 icon

Easy ELO Rating algorithm in PHP

kecske123 | PRO | 02/24/19 07:40:45 AM UTC | 0 ⭐ | 238 👁️ | Never ⏰ | []
PHP |

820 B

|

None

|

0 👍

/

0 👎

<?php
 
class EloRating
{
        public static function Probability(float $rating1, float $rating2): float
        {
                return 1 / (1+(10**(($rating2-$rating1)/400)));
        }
 
        public static function RatingChange(float &$winner_rating, float &$loser_rating, float $match_weight = 30.0)
        {
                $probability_winner = EloRating::Probability($winner_rating, $loser_rating);
                $probability_loser = 1 - $probability_winner;
                $winner_rating = $winner_rating + $match_weight * (1 - $probability_winner);
                $loser_rating = $loser_rating + $match_weight * (0 - $probability_loser);
        }
}
 
$rating1 = $argv[1];
$rating2 = $argv[2];
$k = $argv[3] ?? 30;
EloRating::RatingChange($rating1, $rating2, $k);
echo $rating1.' '.$rating2.PHP_EOL;

Comments