10

ゲームサイトでユーザー向けのランキングシステムを作成しようとしています。

システムは、加重要素がプレイされたゲーム数である加重勝率に基づいている必要があります。

例えば:

55勝2敗=勝率96%

1勝0敗=勝率100%

最初のレコードは、勝利数が多いため、ランクが高くなるはずです。数学はとても単純だと思いますが、頭を包むことはできません。誰でも助けることができますか?

4

4 に答える 4

7

ELO は勝敗を決める際に対戦相手の強さを考慮するため、より徹底していますが、対戦相手がランダムに一致する場合、シンプルで非常に効果的なアプローチは次のとおりです。

(勝数 + 定数 * 全プレイヤーの平均勝率 %) / (勝数 + 敗北 + 定数)

したがって、ゲーム数が 0 の場合、公式はすべてのプレーヤーの平均であり、プレイするゲームの数を増やすと、公式は実際の記録に収束します。定数はこれを行う速度を決定し、おそらく 5 から 20 の間の値を選択することで問題を解決できます。

于 2011-09-22T04:05:34.937 に答える
1

はい、それは「超簡単」です:

 Percentage = Wins * 100.0 / (Wins + Losses)

整数に丸めるには、通常roundorを使用Math.roundします (ただし、プログラミング言語は指定しませんでした)。

値は、指定された比率を使用して、勝利数に重み付けできます。

 Rank = Wins * Wins / (Wins + Losses)

しかし、Elo (私のコメントを参照) のように、問題をよりよく理解する他のシステムがあります。

于 2011-09-22T03:32:11.767 に答える
0

スコア = (勝利ごとのポイント) * (勝利数) + (敗北ごとのポイント) * (敗北数) はどうでしょうか。ここで、勝利ごとのポイントは正の数であり、敗北ごとのポイントは負の数です。あなたのアプリケーション。

于 2011-09-22T13:51:34.330 に答える
0

別の可能性は、これらの「役立つ」スコアをどのように注文すればよいですか?に対する私の答えです。. 基本的に、勝利数を使用して、プレイヤーがゲームに勝つ確率の可能性の範囲を決定し、下限を取得します。これにより、55-2 は 1-0 を打ち負かし、信頼水準を適切に選択できます。(特に理由がないので、50% に設定することをお勧めします。詳細については、投稿を参照してください。実際には非常に簡単です。)

技術的なことはさておき、Agresti-Coull ではなく Wald 間隔を使用するといういくつかの提案を見てきました。実際には、大きな入力に対して同じ結果が得られます。しかし、ゲーム数が少ない場合は、Agresti-Coull を好む十分な理由があります。(ちなみに、私は自分でこのアイデアを思いつきましたが、確かに私が最初ではありませんでしたが、後でそれがやや標準的であることがわかりました。)

于 2011-09-22T05:50:22.283 に答える