add some randomness to lrn interval

This commit is contained in:
Damien Elmes 2011-03-29 09:44:08 +09:00
parent 495b058618
commit fc96e12a0a
2 changed files with 7 additions and 2 deletions

View file

@ -294,7 +294,11 @@ limit %d""" % self.reportLimit, lim=self.dayCutoff)
card.grade += 1
else:
card.grade = 0
card.due = time.time() + self._delayForGrade(conf, card.grade)
delay = self._delayForGrade(conf, card.grade)
if card.due < time.time():
# not collapsed; add some randomness
delay *= random.uniform(1, 1.25)
card.due = time.time() + delay
heappush(self.lrnQueue, (card.due, card.id))
self._logLrn(card, ease, conf, leaving, type)

View file

@ -65,7 +65,8 @@ def test_learn():
# fail it
d.sched.answerCard(c, 1)
# it should by due in 30 seconds
assert round(c.due - time.time()) == 30
t = round(c.due - time.time())
assert t >= 30 and t <= 40
# and have 1 cycle, but still a zero grade
assert c.grade == 0
assert c.cycles == 1