计算琐事游戏

时间:2018-02-17 08:14:15

标签: algorithm probability

假设您有一款游戏可以为玩家提供一系列真假问题。玩家回答它们并且程序会记住答案历史记录。

历史只是一系列布尔值,显示玩家是否正确,并在阵列的开头插入新问题。

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

您可以采用平均错误率(每10个问题说1个错误)。但这会让球员因很久以前发生的错误而受到惩罚。

您可以添加一种阻尼,以便随着时间的推移旧的错误具有更少的“功率”。基本上是指数加权移动平均线。

我尝试过这些方法,效果很好。我尝试过研究贝叶斯网络,但它们似乎并不适用于此。它们似乎只适用于多个方面之间关系的情况。在这种情况下,只有一件事:“玩家正确的几率”。

有人能建议找到“玩家表现”值的好方法,也就是说下一回合玩家正确的概率吗?

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因子处理的。

它还考虑了问题的难度,这应该是估计玩家是否会正确回答的重要因素。

作为额外奖励,它可以帮助您为特定用户选择适当难度的问题。