一位客户要求我为在线学习网站添加一个简单的间隔重复算法(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算法,以便用户下次进行问答时,会更频繁地接收问题,而不是正确回答的问题。此外,以前回答错误,但最近经常正确回答的问题应该较少出现。
以前有人实施过这样的措施吗?有什么建议吗?
它们是我找到的最好的链接:
http://en.wikipedia.org/wiki/Spaced_repetition
http://www.mnemosyne-proj.org/principles.php
http://www.supermemo.com/english/ol/sm2.htm

最佳答案

你要做的是为所有的问题设置一个数字。您可以规范化这些数字(使其总和为1)并进行优先选择。
如果X_i是不同问题的数量,而i是每个问题平均被回答的次数,那么您可以在N时间中找到M,如下所示:
创建设置为0的数组。
浏览数据,每次您看到问题X回答错误时,将M*N增加X[N],其中i是回答时间,N[i]是一个递增函数。
因为f(t)正在增加,很久以前答错的问题比昨天答错的问题影响要小。你可以尝试不同的t来获得良好的行为。
更聪明的方法
更快的方法不是每次选择问题时都生成f,而是将其保存在数据库表中。
您将无法使用此解决方案应用f。相反,只要在每次答错的时候加1,然后有规律地浏览表格——比如说每到午夜——然后把所有的f乘以一个常数——比如说X[]
更新:事实上,你应该把数据建立在正确的基础上,而不是错误的基础上。否则,长时间不回答真假的问题,被选中的机会就小了。应该是相反的。

09-30 00:32