Написание программы на языке программирования PHP
Вычисление рейтинга Эло происходит следующим методом:
Вычисляется математическое ожидание количества очков, которое наберёт игрок в партии с
(оно равно сумме вероятности выигрыша игрока
и половины вероятности ничьей):
,
где:
-
— математическое ожидание количества очков, которое наберёт игрок
в партии с
;
-
— рейтинг игрока
;
-
— рейтинг игрока
.
Новый рейтинг игрока рассчитывается по формуле:
,
где:
-
— коэффициент, значение которого равно 10 для сильнейших игроков (рейтинг 2400 и выше), 15 — для игроков с рейтингом меньше чем 2400 и 30 (было 25) — для новых игроков (первые 30 партий с момента получения рейтинга ФИДЕ);
-
— фактически набранное игроком
количество очков (1 очко за победу, 0,5 — за ничью и 0 — за поражение);
-
— новый рейтинг игрока
.
Исходный код программы будет выглядеть следующим образом:
<form action="" method="post">
<input type="text" name="rating_a" value="Rating A" maxlenght="4">
<input type="text" name="rating_b" value="Rating B" maxlenght="4"> <BR>
Кто победил? Первый (1) или Второй (2) ? <BR>
<input type="text" name="winner" value="Winner">
<input type="submit" value="OK">
</form>
<?php
$rating_a = $_POST['rating_a'];
$rating_b = $_POST['rating_b'];
$winner=$_POST['winner'];
$e = 1/(1+pow(10, ($rating_b-$rating_a)/400));
$e2 = 1/(1+pow(10, ($rating_a-$rating_b)/400));
function EloK($rating)
{
if ($rating >= 2400) {
return(10);
}
else if ($rating >= 1000) {
return(15);
}
else {
return(25);
}
}
if ($winner==1)
{
$new_rating_a = $rating_a + EloK($rating_a) * (1 - $e);
$new_rating_b = $rating_b + EloK($rating_b) * (0 - (1-$e));
} else if ($winner==2) {
$new_rating_b = $rating_b + EloK($rating_b) * (1 - $e2);
$new_rating_a = $rating_a + EloK($rating_a) * (0 - (1-$e2));
}
print $new_rating_a;
print ' / ';
print $new_rating_b;
?>
Описание исходного кода:
В данном исходном коде создается форма в которой вводятся значения трёх переменных, затем после нажатия кнопки “OK” с помощью метода POST передаются в код, написанный на языке программирования PHP. В коде PHP переменные $rating_a, $rating_b, $winnerполучают значения переменных, введенных ранее. Затем вычисляется математическое ожидание количества очков, которое наберёт игрок A в партии с игроком B, и потом полученные значения записываются в переменные $e и $e2 соответственно. Далее идёт функция, которая перехватывает значения переменных $rating_a и $rating_b, затем сравнивает их со значением, требующимся для получения коэффициента, и потом возвращает нужное значение коэффициента. Далее вычисляются новые рейтинги игроков A и B в зависимости от победы того или иного игрока, значение победы записывается либо 1, либо 2 (где 1 – победа игрока A, а 2 – победа игрока B) в переменную $winner. Затем происходит вывод переменных $new_rating_a и $new_rating_b, т.е. новые рейтинги обоих игроков.