Is there a pseudo-random number generator simple enough to do in your head?

In your head you can do "semantic" random number generation :-)

Like taking random word, and calculating some metric out of it, repeat until you'll get number with reasonable length.

For example, word "exercise" might get converted to 10100101b (you can see my conversion idea here).


A linear feedback shift register is pretty simple, as long as you're comfortable with thinking in binary (or maybe hex, since it's easy to map between the two).

A more complex one is Xorshift, but if you know your bitwise operations, it should be quite possible to work with as well.


How about Blum Blum Shub, but with prime numbers too small for secure use? Used securely it's slow, but it involves operations that we're used to dealing with, so you might be able to get to a manageable speed without too much practice, maybe with M = 437 or moderately bigger.

I doubt whether anything I could do in my head will be secure, anyway. I just can't remember big enough numbers to work without mistakes on a reasonably-sized state.

You can easily do a 10 bit LFSR on your fingers, if you have decent tendons ;-)

Not a direct answer, but depending why you're asking you might be interested in Solitaire, which generates a keystream (i.e. a pseudo-random sequence) using a deck of cards. Can't be done in your head, but doesn't require pencil and paper.