微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 间隔重复(SRS)用于学习

客户要求我为基于在线的学习网站添加一个简单的间隔重复算法(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算法,以便用户下一次接受测验时,会更经常地收到错误回答的问题;比问题回答正确.此外,以前未正确回答的问题,但最近经常正确回答的问题应该较少发生.

有没有人实现过这样的事情?任何提示或建议?

Theese是我找到的最好的链接

> http://en.wikipedia.org/wiki/Spaced_repetition
> http://www.mnemosyne-proj.org/principles.php
> http://www.supermemo.com/english/ol/sm2.htm

解决方法

你想要做的是为所有问题提供一个数字X_i.您可以对这些数字进行归一化(使其总和1)并做出优先选择.

如果N是不同问题的数量,M是每个问题平均回答的次数,那么你可以在M * N中找到X,如下所示:

>创建数组X [N]设置为0.
>运行数据,每次看到问题我回答错误时,通过f(t)增加N [i],其中t是应答时间,f是一个扩展函数.

因为f正在增加,一个问题早就回答错了,比昨天回答错误的影响还小.你可以尝试不同的f来获得一个很好的行为.

更聪明的方式
每次选择问题时,不会生成X [],而是将其保存在数据库表中.
您无法使用此解决方案f.相反,每次问题回答错误添加1,然后定期运行表 – 每半年说一遍,并将所有X [i]乘以一个常量 – 如0.9.

更新:实际上,您应该将数据置于正确的位置,而不是错误.否则问题长时间不回答既不真实也不虚假,获得选择的机会较小.应该是相反的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐