我有一个 PHP/MySQL 排行榜,按百分比降序显示用户。我计算百分比:
$percentage = ($correct / $total) * 100
我的问题是如何考虑尝试次数(风险),以便假设 100% 中 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 仅用作示例或其他非线性函数,如 log。
计算平均用户拥有的百分比,并为每个用户提供 10 次平均尝试的基线(对于 10 的某个值)。
假设平均值为 50%。然后你会计算$percentage = ($correct+5)/($total+10)*100
. 始终表现良好的用户最终仍会脱颖而出(因为他们的成功将超过您开始使用他们的平均分数,但起步良好的用户不会跳到顶部)。
例如,在此系统下,您的第一个用户现在的得分为 ,6/11 = 54%
而您的第二个用户的得分为80 / 90 = 88%
.