Paste Search Dynamic
calculateRatingElo
  1. <?php
  2.  
  3. function calculateRatingElo($played, $bestRatingElo, $ratingElo_1, $ratingElo_2, $winner){
  4.         $odds = $ratingElo_2 - $ratingElo_1;
  5.         if ($odds > 400) {
  6.             $odds = 400;
  7.         }
  8.         elseif ($odds < -400) {
  9.             $odds = -400;
  10.         }
  11.         $e = 1 / ( 1 + pow(10,($odds / 400 ) ) );
  12.  
  13.     switch(true) {
  14.       case $played < 30 || $ratingElo_1 < 900:
  15.               $coefficient = 40;
  16.               break;
  17.             case $ratingElo_1 < 1500:
  18.               $coefficient = 20;
  19.               break;
  20.             case $ratingElo_1 < 2000:
  21.               $coefficient = 10;
  22.               break;
  23.             case $ratingElo_1 < 2500:
  24.               $coefficient = 1;
  25.               break;
  26.             case $ratingElo_1 >= 2500:
  27.               $coefficient = 1 - ($ratingElo_1/3000);  
  28.               break;
  29.     }
  30.  
  31.     if ($coefficient < 0) {
  32.       $coefficient = 0;
  33.     }
  34.  
  35.  
  36.         $newRating = $ratingElo_1 + $coefficient * ($winner - $e);
  37.  
  38.         if($newRating < 0){
  39.             $newRating = 0;
  40.         }
  41.  
  42.         return round($newRating, 2);
  43.     }
  44.  
  45.     $newElo = 1000;
  46.     $lose = 0;
  47.  
  48.     $games = 5000000;
  49.  
  50.     for($i=0; $i<$games; $i++){
  51.       // if($newElo < 1500) {
  52.         $oppoElo = $newElo;
  53.       // } else {
  54.         // $oppoElo = 1500;
  55.       // }
  56.       if(rand(0, 1000) / 1000 <= 1.0) {
  57.         // победа
  58.           $newElo = calculateRatingElo ($i, 0, $newElo, $oppoElo, 1);
  59.       } else {
  60.         // поражение
  61.           $newElo = calculateRatingElo ($i, 0, $newElo, $oppoElo, 0);
  62.         $lose += 1;
  63.       }
  64.     }
  65.  
  66.     $winrate = floor(100 - $lose/$games*100);
  67.     echo "games: $games; wins: $winrate%; elo: $newElo;";
  68.  
  69. ?>
Parsed in 0.024 seconds