I also recall there being a problem in the use of 5-grams which lead to a sequence in which it guessed 0%, but I'm struggling to find it now.
Edit: Interesting tidbit: I pre-seeded at 100% by holding down F and it trended down to ~68% before I decided I shouldn't spend too much time on this. Maybe we didn't use it long enough?
There is an inherent 50% probability of each character occurring next. i.e if you were to guess randomly, you would be right 50% of the time given enough trials.
[os.urandom(1)[0] < 128 for x in xrange(0, 100)]
and typed 'd' for True and 'f' for False in the array, bringing the accuracy of the predictor down to 53%. Theoretically, I'm guessing doing it for large enough numbers should make it exactly 50%.
For k=1: 01 repeating
For k=2: 0011 repeating
For k=3: 00010111 repeating
[1] https://en.wikipedia.org/wiki/De_Bruijn_sequence#Algorithm
edit: dangit, beaten to the punch.