From fc96e12a0a71e954b005167751aa442a87f28779 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 29 Mar 2011 09:44:08 +0900 Subject: [PATCH] add some randomness to lrn interval --- anki/sched.py | 6 +++++- tests/test_sched.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/anki/sched.py b/anki/sched.py index 545ad8295..0f5b582aa 100644 --- a/anki/sched.py +++ b/anki/sched.py @@ -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) diff --git a/tests/test_sched.py b/tests/test_sched.py index 95eee323d..0e87128db 100644 --- a/tests/test_sched.py +++ b/tests/test_sched.py @@ -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