File "include_fonction_elo.php"
Full Path: /home/analogde/www/Bookmarks/CHESS_ON/include_fonction_elo.php
File size: 2.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/****************************************************************************/
// Calcul de la probabilité de gagner du joueur J1
function estimation($elo_1, $elo_2)
{
$exp = ($elo_2 - $elo_1) / 400;
return (1/ (1 + pow(10,$exp)));
}
/****************************************************************************/
// Calcul de la nouvelle cote du joueur J1
function calcul_elo_J1($elo_1, $elo_2, $score)
{
$k = facteur_k($elo_1);
$estimation = estimation($elo_1, $elo_2);
$nouveau_rang = $elo_1 + $k * ($score - $estimation);
// si la cote devient trop petite < 300, on la clamp à cette valeur
if ($nouveau_rang < 300)
{
$nouveau_rang = 300;
}
return array($nouveau_rang, $estimation);
}
/****************************************************************************/
// valeur de K en fonction de la cote du joueur
function facteur_k($elo)
{
if($elo < 1000)
{
$k = 80;
}
if($elo >= 1000 AND $elo < 2000)
{
$k = 50;
}
if ($elo >= 2000 AND $elo <= 2400)
{
$k = 30;
}
if ($elo > 2400)
{
$k = 20;
}
return $k;
}
/****************************************************************************/
/*
// Calcul des nouvelles cotes de P1 et P2
// score = 1 si P1 gagne
// score = 0 si P1 perd
// score = 0.5 s'il y a match nul
*/
function nouveau_rangs($elo_1, $elo_2, $score)
{
// Score pour P2 VS P1
$score_2 = 1 - $score;
$calcul_J1 = calcul_elo_J1($elo_1, $elo_2, $score);
$estimation_J1 = $calcul_J1[1];
$elo_J1 = round($calcul_J1[0]);
$calcul_J2 = calcul_elo_J1($elo_2, $elo_1, $score_2);
$estimation_J2 = $calcul_J2[1];
$elo_J2 = round($calcul_J2[0]);
return array($elo_J1, $elo_J2, $estimation_J1, $estimation_J2);
}
/****************************************************************************/
function afficher_difference($nb)
{
if ($nb >= 0)
{
$nb = '+'.$nb;
}
return $nb;
}
/****************************************************************************/
function convertir_pourcentage($nb)
{
return round($nb * 100, 2).' %';
}
/****************************************************************************/
function resultat_partie($score)
{
if($score == 1)
{
return 'J1 gagne';
}
if($score == 0)
{
return 'J2 gagne';
}
if ($score == 0.5)
{
return 'Match nul';
}
}
/****************************************************************************/
?>