我知道你的意思,但是你的公式和解释完全是在误导人。ft计算公式中的当前时间和ckt中的当前时间是两个不同的量,你首先就不应该用同一个ct符号表示。而且ft中的ct确实是存储在了记录中,而不是你说的运行时从当前环境中获取。另外ft说成是遗忘时间点也很误导人,应该是ft为下次需要复习的时间点。科学之子 写了:注意ct=当前系统时间,它是一个可变量,而非固定不变,它不是存储在记录中,而是运行时从当前环境获取.astolia 写了:看吧,我就说你没把公式搞清楚。科学之子 写了: 当前距离遗忘临界点
kt=期望记忆时长=60
ckt=当前距离遗忘的距离=30
r(0.5)=ctk(30)/kt(60)//还有30秒忘记
r(0.05)=ctk(3)/kt(60)//还有3秒忘记
r(0.0)=ctk(0)/kt(60)//还有0秒忘记(达到遗忘临界点,是数值上最理想的被复习状态)
r从哪来的恒等于1?
问题在于当kt=60时, ckt根本不可能为30
你自己说的 ft=遗忘时间点=当前系统时间(ct)+期望记忆时长,后面也没见你修改说法,就照这个算
那么当kt为60时,ft=ct+kt=ct+60
则ckt=abs(ft-ct)=abs(ct+60-ct)=abs(60)=60,r=60/60=1
如果当前系统时间ct不变,您的理解是没错,r始终恒等于1.
如果你坚持用你那个公式判断的话,基本没什么优化余地了。如果你愿意改下算法,优先选择ft最接近当前系统时间的,ft相同时才去考虑kt的话,就可以通过对ft排序大幅减少查找时间