ユーザーをパーセンテージで降順で表示する PHP/MySQL のリーダー ボードがあります。私はパーセンテージを計算します:
$percentage = ($correct / $total) * 100
私の質問は、試行回数 (リスク) をどのように考慮して、100% で 1 人中 1 人のユーザーが、93.8% で 80 人中 75 人であるユーザーを上回っていないとしましょう。
何か案は?
これは、結果を並べ替える方法の一部にすぎません
SELECT (correct / $total) * 100 AS percent FROM table ORDER BY percent DESC, attempts ASC;
リスク要因がどれだけ大きな影響を与えるかによって異なります。ここで推測するだけですが、合計で割らないと非常に大きな数になると思いますので、さまざまな解決策を実装できます。いくつかの提案は、結果に (1 + ($total / 100)) を掛けるか、新しい試行ごとに (1 + (sqrt($total) / 100)) を掛けることができます - 他の値を試してみてください。100 は単なる例として、またはログのような他の非線形関数として使用されました。
平均的なユーザーの割合を計算し、各ユーザーに 10 回の平均試行のベースラインを与えます (ある値は 10)。
平均が50%だったとしましょう。次に、 を計算し$percentage = ($correct+5)/($total+10)*100
ます。一貫して良い成績を収めているユーザーは、最終的にはトップに立つでしょう (なぜなら、彼らの成功はあなたが始めた平均スコアを圧倒するからです。しかし、良いスタートを切ったユーザーはトップに飛び上がることはありません)。
たとえば、このシステムでは、最初のユーザーのスコアは に6/11 = 54%
なり、2 番目のユーザーのスコアは になります80 / 90 = 88%
。