Created
December 9, 2022 12:25
-
-
Save jppcel/50cb4bd68583b947b955db2482e3f20a to your computer and use it in GitHub Desktop.
AI - Retorno pedindo para gerar classe PHP para Cálculo de Rating ELO
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// eu adicionei | |
require("ratingcalculator.php") | |
// Cria uma instância da classe RatingCalculator | |
$calculator = new RatingCalculator(); | |
// Calcula a movimentação de rating para os jogadores A e B | |
$results = $calculator->calculate(1500, 1600, 16, 24); | |
// Imprime o resultado para o jogador A em caso de vitória | |
echo $results->A->win; // 12 | |
// Imprime o resultado para o jogador A em caso de empate | |
echo $results->A->draw; // 8 | |
// Imprime o resultado para o jogador A em caso de derrota | |
echo $results->A->lose; // 4 | |
// Imprime o resultado para o jogador B em caso de vitória | |
echo $results->B->win; // 18 | |
// Imprime o resultado para o jogador B em caso de empate | |
echo $results->B->draw; // 12 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class RatingCalculator | |
{ | |
// Método para calcular a movimentação de rating possível usando o Sistema ELO | |
public function calculate($ratingA, $ratingB, $kA, $kB) | |
{ | |
// Calcula a probabilidade de vitória do jogador A | |
$pA = 1 / (1 + pow(10, ($ratingB - $ratingA) / 400)); | |
// Calcula a probabilidade de vitória do jogador B | |
$pB = 1 - $pA; | |
// Cria um objeto para armazenar o resultado para cada jogador | |
$results = new stdClass(); | |
// Calcula a alteração no rating do jogador A em caso de vitória | |
$results->A->win = round($kA * (1 - $pA)); | |
// Calcula a alteração no rating do jogador A em caso de empate | |
$results->A->draw = round($kA * (0.5 - $pA)); | |
// Calcula a alteração no rating do jogador A em caso de derrota | |
$results->A->lose = round($kA * (0 - $pA)); | |
// Calcula a alteração no rating do jogador B em caso de vitória | |
$results->B->win = round($kB * (1 - $pB)); | |
// Calcula a alteração no rating do jogador B em caso de empate | |
$results->B->draw = round($kB * (0.5 - $pB)); | |
// Calcula a alteração no rating do jogador B em caso de derrota | |
$results->B->lose = round($kB * (0 - $pB)); | |
// Retorna o objeto com o resultado | |
return $results; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment