一位客户要求我为基于在线的学习站点添加简单的间隔重复算法(SRS)。但是在投入自我之前,我想与社区进行讨论。
基本上,该网站向用户询问一堆问题(通过从数据库中自动选择100个总问题中的10个说),然后用户给出正确或错误的答案。然后将用户结果存储在数据库中,例如:
userid questionid correctlyanswered dateanswered 1 123 0 (no) 2010-01-01 10:00 1 124 1 (yes) 2010-01-01 11:00 1 125 1 (yes) 2010-01-01 12:00
现在,为了最大程度地提高用户学习所有答案的能力,我应该能够应用SRS算法,以便用户下次进行测验时,会收到错误回答率更高的问题;而不是正确回答的问题。此外,以前回答不正确,但最近经常正确回答的问题应该减少出现。
有人有没有实现过类似的东西?有任何提示或建议吗?
您想要做的是X_i为所有问题提供一个号码i。您可以对这些数字进行归一化(使它们的总和为1),并以相应的概率随机选择一个。
X_i
i
如果N是不同的问题数,M是每个问题已经被平均回答的次数,那么你会发现X在M*N这样的时刻:
N
M
X
M*N
X[N]
N[i]
f(t)``t``f
由于f不断增加,很久以前回答错的问题的影响要小于昨天回答错的问题。您可以尝试不同的方法f以获得良好的行为。
f
更聪明的方法 更快的方法不是X[]每次选择问题时都生成,而是将其保存在数据库表中。您将无法f使用此解决方案。取而代之的是,每次错误回答问题时加1,然后定期遍历表格- 每隔一个午夜说一次-然后将所有乘以X[i]一个常数说即可0.9。
X[]
X[i]
0.9
更新 :实际上,您应该基于正确而不是错误的数据。否则,长时间未回答对与非的问题将有较小的机会被选择。应该相反。