5

I am implementing a flashcard game and I want to implement spaced repetition. I don't need something complex like in SuperMemo, but simply space the learning based on the score for each card.

What I am looking for at the moment is how to calculate the number of days until a card is shown again, based on its score. I found that ZDT uses the list in the screenshot below (1, 2, 3, 5, etc.). Does anybody know how to dynamically generate this list (so that I can calculate beyond a score of 12)?

Or perhaps could someone guess what math function I could use to generate the numbers on the ZDT list? They increase exponentially.

enter image description here

laurent
  • 88,262
  • 77
  • 290
  • 428
  • 2
    I have to admit with my mathematician's hat on that it looks like it is fairly arbitrarily generated. There is a gradual increase in times leading to the massive increase between score 9 and 10 and then that increase comes down. There could be a upper limit on days that it is going to tend towards (eg at a score of one million you are still going to be on only 100 days) or it could be that somebody jsut thought they looked good. The only way I would suspect you would get a canonical answer is by finding details of this kind of thing in a research paper somewhere... – Chris Aug 05 '11 at 11:01
  • 3
    For sequences, http://oeis.org/ can be quite useful. The sequence used isn't cataloged. I agree with Chris, it looks very arbitrary. It might stem from some sort of research into learning, but the numbers in the 20, 35, 70, 85 subsequence look suspiciously round for that. – Michael J. Barber Aug 05 '11 at 11:13
  • Thanks a lot for your replies. I guess it might indeed be the result of some research on memorization. Perhaps remembering something newly learned for more than 3 months is difficult, which would explain the slow down at around 80 days. Just a guess though - I might try to find this algorithm some day. – laurent Aug 06 '11 at 14:16
  • The SuperMemo algorithm (at least SM-2) isn't all that complicated. https://stackoverflow.com/a/49047160 – Suragch Mar 01 '18 at 10:05

1 Answers1

3

It looks very similar to a logistic curve. I'll run a logistic regression on it and see what comes out.

Here is the data (plotted using WolframAlpha)

Data

Here is the equation I got:

f(x) = 115/(1+2192*EXP(-0.79*x))

Here is the plot with the curve:

Data with curve

Unfortunately the curve isn't very accurate for small numbers.

tskuzzy
  • 35,812
  • 14
  • 73
  • 140
  • Thanks a lot for the equation! I'm going to use it to generate the intervals beyond a score of 12. – laurent Aug 06 '11 at 14:17