top | item 46588660

Claude Shannon's randomness-guessing machine

36 points| Kotlopou | 1 month ago |loper-os.org

12 comments

order

arn3n|1 month ago

There’s a basic approach to this using markov chains which works surprisingly well. Scott Aaronson once challenged some students to beat his algorithm — only one student could, who claimed he just “used his free will”. Human randomness isn’t so random. There’s a neat little writeup about it here: https://planetbanatt.net/articles/freewill.html

kelseyfrog|1 month ago

I like to think that this is a measurement of free will in the literal, naïve sense. It makes just as much sense as other definitions (the ability to take action independent of external cause) and it has the bonus of being quantifiable.

The only downside? A LOT of people get very mad at the implications.

Tzt|1 month ago

"free will" also known as digits of pi mod 2

grayhatter|1 month ago

> It is not hard to win this game. If you spent a whole day playing it, shame on you. But what if you did not know that you are playing a game? I dug up this toy when I saw people talking about generating 'random' numbers for cryptography by mashing keys or shouting into microphones. It is meant to educate you regarding the folly of such methods.

I wouldn't trust a human to generate enough entropy for any kind of key material. But I'd happily feed their output, and more importantly, the metadata around said output (like the ns delay between key presses) into the seed of a CSPRNG, (much more importantly, along with plenty of other sources of entropy).

The primary characteristic of a CSPRNG, is the inability to predict the next output, from the previous output. Once you get sufficient entropy to seed a CSPRNG, nothing you (correctly) mix into the state, can decrease it's security.

There is no folly in using human interactions to help seed a random number generator. Assuming you dont use the characters they type as the only seed input.

RandomBK|1 month ago

Additionally, so long as we can be sure the human's output is not actively adversarial, we can xor it into the entropy pool. Entropy can only increase this way.

kurisufag|1 month ago

mildly related: when i want a single bit of entropy in my day-to-day without fooling myself, i think of a random long-ish word and decide based on the evenness of the number of letters. probably this isn't an unbiased oracle, but it's good enough when i don't have a coin handy and care about avoiding self-delusion more than fair odds.

tucnak|1 month ago

I did a couple runs without thinking much about it, and the computer never got more than 25%. I guess 0000 and 1111 don't feel random, but work pretty well. Probably by random chance is only 1/8 or 12.5%. In other words it will happen all the time.

ChocMontePy|1 month ago

I got 58% after 100 attempts.

My method uses the fact that the letters a-k + u make up around 49.9% of letters in a normal text. So I just go through a text letter by letter in my mind, giving 0 if the letter is a-k or u, and a 1 if it's l-t or v-z.

For example, the Gettysburg Address:

f - 0

o - 1

u - 0

r - 1

s - 1

c - 0

o - 1

r - 1

e - 0

continuational|1 month ago

Got 50% in first try, the computer only made two guesses, one right and one wrong, and passed the rest.

3ple_alpha|1 month ago

Did you stop after 14 iterations? Because the game is, in fact, infinite.