Skip to content

Instantly share code, notes, and snippets.

@jppcel
Created December 9, 2022 12:25
Show Gist options
  • Save jppcel/50cb4bd68583b947b955db2482e3f20a to your computer and use it in GitHub Desktop.
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
<?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
<?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