文字数[1678文字] この記事は2分6秒で読めます.

イロレーティングシステムをPHPで起こす.生成AIに検証してもらう.

20241204

Logging

おはよう御座います.イロレーティングシステムをPHPで起こす.生成AIに検証してもらう.このコードには問題があります.K値にマイナスを入れるとバグるという事なのでその対策が事前に必要になります.このコードは生成AIが生成したものを別の生成AIに検証してもらいました.

とても便利です、わざわざコードを書かなくて良いところがとても便利ですが少し味気無い.

因みにこのコードは某O社のブログ連載を目にしたのがきっかけです.待てど暮せど連載が遅いのでこちらで記載した訳です.この頃、某O社のブログは停滞しています、恐らくそれほどアクセスビューも無さそうな気がします.

簡単にできるようで難しさを実感したのか、成功したのかは分かりませんが自分の見解はそれほどのアクセス数は出てないと思っています.

<?php

class EloRatingSystem {
    private $kFactor; // K値(調整係数)

    public function __construct($kFactor = 32) {
        $this->kFactor = $kFactor;
    }

    /**
     * レーティング計算
     * @param float $playerRating プレイヤーの現在のレーティング
     * @param float $opponentRating 対戦相手のレーティング
     * @param float $result 試合結果 (1: 勝ち, 0: 負け, 0.5: 引き分け)
     * @return float 更新後のレーティング
     */
    public function calculateNewRating($playerRating, $opponentRating, $result) {
        // 期待勝率を計算
        $expectedScore = 1 / (1 + pow(10, ($opponentRating - $playerRating) / 400));

        // 新しいレーティングを計算
        $newRating = $playerRating + $this->kFactor * ($result - $expectedScore);

        return $newRating;
    }
}

// 使用例
$eloSystem = new EloRatingSystem(32);

$player1Rating = 1600; // プレイヤー1の初期レーティング
$player2Rating = 1500; // プレイヤー2の初期レーティング

$result = 1; // プレイヤー1が勝利 (勝ち: 1, 負け: 0, 引き分け: 0.5)

$newPlayer1Rating = $eloSystem->calculateNewRating($player1Rating, $player2Rating, $result);
$newPlayer2Rating = $eloSystem->calculateNewRating($player2Rating, $player1Rating, 1 - $result);

echo "プレイヤー1の新しいレーティング: $newPlayer1Rating\n";
echo "プレイヤー2の新しいレーティング: $newPlayer2Rating\n";

短期間に結果が出たとしても長期的に持続可能かという事も課題になります.一番は継続するという事が難しいです.自分みたいに継続できるのは稀なんだといろいろな人をみてきて思いました.

明日へ続く

3220番目の投稿です/32 回表示されています.

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

きっかけ, バグ, ブログ, マイナス, 事前, 係数, 某社, 自分, 見解,