<?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