top | item 12100857

Predicting one of 2 characters you will randomly press

20 points| aram | 9 years ago |github.com

24 comments

order

throwaway2016a|9 years ago

For me it is pretty consistently 50% +/- 5 even after a minute. It doesn't seem to work well if you repeat the same key a lot (i.e don't flip to often).

overlordalex|9 years ago

This is actually due to a psychological thing where humans don't find long strings of repeated letters/digits "random" and hence will flip more frequently than you'd expect from a machine.

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.

widforss|9 years ago

This is definetly not working. I'm certain that one can write a program like this, but I'm consistenly getting 50 % even though I use different strategies every time.

oneeyedpigeon|9 years ago

I got 52% after a good lot of keypresses (not sure exactly how many). I chose to not look at the screen at all during that time - I think that probably helps.

andrezsanchez|9 years ago

I did something like this a long time ago in a little competition for beating others' rock paper scissors programs, except I used the other players' moves relative to my own (e.g. my program could catch on to the other player choosing the move that would beat my last move) as well as their current pattern of winning or losing.

vorotato|9 years ago

It works if you're trying to be random, however if you're trying to react and respond to its patterns you can win.

rohanprabhu|9 years ago

So, I tried a simple python one-liner:

[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%.

mikeash|9 years ago

If it doesn't come down to 50% for sufficiently large numbers, you've found a break in your OS's urandom and someone is about to be famous!

dzdt|9 years ago

Doesn't work from my smartphone. Sounds like a fun challenge though, would like to try.

pi-rat|9 years ago

Seems like it's written using ES6 syntax, which many browsers can't handle yet. Safari stopped at a lambda ( () => ) here.

amake|9 years ago

I'm on OS X with Firefox 47.0.1 and it doesn't work for me either :(

js8|9 years ago

Is there, for a given k, an easy to remember sequence (easy to remember algorithm with little state) that has all the k-grams with the same frequency?

For k=1: 01 repeating

For k=2: 0011 repeating

For k=3: 00010111 repeating

tokenizerrr|9 years ago

Very cool. Am getting ~50% accuracy so I'm glad to see my free will is still intact!