kecske123

Easy ELO Rating algorithm in PHP

Feb 24th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 0.82 KB | None | 0 0
  1. <?php
  2.  
  3. class EloRating
  4. {
  5.         public static function Probability(float $rating1, float $rating2): float
  6.         {
  7.                 return 1 / (1+(10**(($rating2-$rating1)/400)));
  8.         }
  9.  
  10.         public static function RatingChange(float &$winner_rating, float &$loser_rating, float $match_weight = 30.0)
  11.         {
  12.                 $probability_winner = EloRating::Probability($winner_rating, $loser_rating);
  13.                 $probability_loser = 1 - $probability_winner;
  14.                 $winner_rating = $winner_rating + $match_weight * (1 - $probability_winner);
  15.                 $loser_rating = $loser_rating + $match_weight * (0 - $probability_loser);
  16.         }
  17. }
  18.  
  19. $rating1 = $argv[1];
  20. $rating2 = $argv[2];
  21. $k = $argv[3] ?? 30;
  22. EloRating::RatingChange($rating1, $rating2, $k);
  23. echo $rating1.' '.$rating2.PHP_EOL;
Advertisement
Add Comment
Please, Sign In to add comment