假设您有一款游戏可以为玩家提供一系列真假问题。玩家回答它们并且程序会记住答案历史记录。
历史只是一系列布尔值,显示玩家是否正确,并在阵列的开头插入新问题。
确定当前玩家表现的最佳方法是什么?
您可以采用平均错误率(每10个问题说1个错误)。但这会让球员因很久以前发生的错误而受到惩罚。
您可以添加一种阻尼,以便随着时间的推移旧的错误具有更少的“功率”。基本上是指数加权移动平均线。
我尝试过这些方法,效果很好。我尝试过研究贝叶斯网络,但它们似乎并不适用于此。它们似乎只适用于多个方面之间关系的情况。在这种情况下,只有一件事:“玩家正确的几率”。
有人能建议找到“玩家表现”值的好方法,也就是说下一回合玩家正确的概率吗?
答案 0 :(得分:2)
到目前为止,您的方法很好,但有一种方法可以显着提高玩家在下一个问题上的预测表现。我们的想法是为每位玩家分配技能等级,并使用ELO rating system为每个问题分配难度等级。
您可能熟悉ELO评级以预测游戏中两个玩家之间的匹配结果,但玩家与琐事问题同样有效。事实上,流行的国际象棋问题网站chesstempo使用这个确切的系统。
在玩家回答问题后,玩家和问题的评分会根据他们之前的评分,他们的K因子以及玩家是否正确或错误来更新。一个正确的答案就像玩家赢了,错误的答案就像赢得的问题一样。
玩家在下一个问题上的预测表现由公式给出:
P(right answer) = 1/(1+10^((R_q-R_p)/400))
R_q
是问题评分,R_p
是玩家评分。
这个系统应该解决你所有的问题,包括加重较旧的答案 - 这是由K因子处理的。
它还考虑了问题的难度,这应该是估计玩家是否会正确回答的重要因素。
作为额外奖励,它可以帮助您为特定用户选择适当难度的问题。