Elo soccer rating
168 сообщений
#16 лет назад
Приветствую всех.Не понимаю схему ело рейтинга, хоть убейте, может у кого есть готовый вариант.
А так покапался в сети и нашёл, ну там баг сделал по другому, а баг тот же.
Состоит он в том.Помогите)
function Rating($pl_1 , $pl_2 , $score_home , $score_away , $k)
{
$rh = "SELECT rait FROM fifa_players WHERE id='".$pl_1."'";
$rh = mysql_query($rh);
$ra = "SELECT rait FROM fifa_players WHERE id='".$pl_2."'";
$ra = mysql_query($ra);
$Ro_pl_1 = $rh;
$Ro_pl_2 = $ra;
if($Ro_pl_1 > $Ro_pl_2) { $d = $Ro_pl_1 - $Ro_pl_2; $dr = $d + 20; } if($Ro_pl_1 < $Ro_pl_2) { $dr = $Ro_pl_2 - $Ro_pl_1; }
if($Ro_pl_1 == $Ro_pl_2) { $dr = $Ro_pl_2 - $Ro_pl_1; }
if($score_home > $score_away)
{
$g = $score_home - $score_away;
if ($g == 1)
{
$We = 1/(pow(10,-$dr/400)+1);
$do_pl_1 = $Ro_pl_1 + $k * (1 - $We); $do_pl_1 = round($do_pl_1);
$do_pl_2 = $Ro_pl_2 + $k * (0 - $We); $do_pl_2 = round($do_pl_2);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_1) WHERE id='".$pl_1."'";
$res = mysql_query($res);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_2) WHERE id='".$pl_2."'";
$res = mysql_query($res);
if ($res == true) { echo "Готово"; }
}
if ($g >= 2)
{
$s = $k;
$p = $k/2;
$k = $s + $p;
$We = 1/(pow(10,-$dr/400)+1);
$do_pl_1 = $Ro_pl_1 + $k * (1 - $We); $do_pl_1 = round($do_pl_1);
$do_pl_2 = $Ro_pl_2 + $k * (0 - $We); $do_pl_2 = round($do_pl_2);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_1) WHERE id='".$pl_1."'";
$res = mysql_query($res);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_2) WHERE id='".$pl_2."'";
$res = mysql_query($res);
if ($res == true) { echo "Готово"; }
}
}
if($score_home < $score_away)
{
$g = $score_away - $score_home;
if ($g == 1)
{
$We = 1/(pow(10,-$dr/400)+1);
$do_pl_1 = $Ro_pl_1 + $k * (0 - $We); $do_pl_1 = round($do_pl_1);
$do_pl_2 = $Ro_pl_2 + $k * (1 - $We); $do_pl_2 = round($do_pl_2);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_1) WHERE id='".$pl_1."'";
$res = mysql_query($res);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_2) WHERE id='".$pl_2."'";
$res = mysql_query($res);
if ($res == true) { echo "Готово"; }
}
if ($g >= 2)
{
$s = $k;
$p = $k/2;
$k = $s + $p;
$We = 1/(pow(10,-$dr/400)+1);
$do_pl_1 = $Ro_pl_1 + $k * (0 - $We); $do_pl_1 = round($do_pl_1);
$do_pl_2 = $Ro_pl_2 + $k * (1 - $We); $do_pl_2 = round($do_pl_2);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_1) WHERE id='".$pl_1."'";
$res = mysql_query($res);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_2) WHERE id='".$pl_2."'";
$res = mysql_query($res);
if ($res == true) { echo "Готово"; }
}
}
if($score_home == $score_away)
{
$g = $score_away - $score_home;
if ($g == 0)
{
$We = 1/(pow(10,-$dr/400)+1);
$do_pl_1 = $Ro_pl_1 + $k * (0.5 - $We); $do_pl_1 = round($do_pl_1);
$do_pl_2 = $Ro_pl_2 + $k * (0.5 - $We); $do_pl_2 = round($do_pl_2);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_1) WHERE id='".$pl_1."'";
$res = mysql_query($res);
$res = "UPDATE fifa_players SET rait=(rait+$do_pl_2) WHERE id='".$pl_2."'";
$res = mysql_query($res);
if ($res == true) { echo "Готово"; }
}
}
return true;
}
Тут описана система ело для футбола, ссылка .
Есть ещё 1 вариант.