计算问答游戏的准确性

Calculate accuracy for trivia game

假设您有一款游戏会向玩家提出一系列是非题。玩家回答他们,程序会记住回答历史。

历史只是一个布尔数组,显示玩家是否正确,新问题插入数组的开头。

确定当前玩家表现的最佳方法是什么?

您可以取平均错误率(假设每 10 个问题有 1 个错误)。但这会惩罚玩家很久以前犯的错误。

您可以添加一种阻尼,使旧错误随着时间的推移变得更少 'power'。基本上是指数加权移动平均线。

这些方法我都试过了,效果不错。我尝试研究贝叶斯网络,但它们似乎不适用于此处。它们似乎只对您在多个方面之间建立关系的情况有用。在这种情况下,只有一件事:'odds of player being correct'.

谁能提出一个找到 'player performance' 值的好方法,也就是玩家在下一回合正确的概率?

到目前为止,您的方法很好,但有一种方法可以显着提高玩家在下一个问题上的预测表现。这个想法是为每个玩家分配一个技能等级,并使用 ELO rating system.

为每个问题分配一个难度等级

您可能熟悉 ELO 评级来预测游戏中两名玩家之间的比赛结果,但玩家与琐事问题同样有效。事实上,流行的国际象棋问题网站 chesstempo 使用的正是这个系统。

玩家回答问题后,玩家和问题的评分会根据他们之前的评分、他们的 K-factors 以及玩家是否答对了问题进行了相应更新。答对即为玩家获胜,答错即为题目获胜

玩家对下一题的预测表现由公式给出:

P(right answer) = 1/(1+10^((R_q-R_p)/400))

其中 R_q 是问题评分,R_p 是玩家评分。

该系统应解决您的所有问题,包括减少较旧答案的权重 - 这由 K-factor 处理。

也考虑到了问题的难易程度,这应该是预估玩家是否会答对的一个重要因素。

作为额外的奖励,它可以帮助您 select 给定用户提出适当难度的问题。