计算问答游戏的准确性
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 给定用户提出适当难度的问题。
假设您有一款游戏会向玩家提出一系列是非题。玩家回答他们,程序会记住回答历史。
历史只是一个布尔数组,显示玩家是否正确,新问题插入数组的开头。
确定当前玩家表现的最佳方法是什么?
您可以取平均错误率(假设每 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 给定用户提出适当难度的问题。