Imagine a coin. Flip it a hundred times in your head and write down what you see -
make it look properly random. Almost no one can. A person's imagined coin usually leaves fingerprints
all over the page, and three lines of arithmetic lift them into the open - as probabilities, never
as proof.
A real coin has no memory. Each flip forgets the last one completely, which is exactly why a fair
sequence does something that feels wrong: it clumps. Six heads in a row, then a lonely tail,
then five tails - a real hundred flips is lumpy with streaks. When a person tries to invent
randomness, they smooth those lumps out. They switch sides too often, they never dare a long streak,
and they keep the score close to even. Every one of those instincts is a tell, and every tell has a
number attached.
First - you try
Fake a coin
Type a hundred flips of a coin that only exists in your head
Press H or T - or the buttons, or ← for tails and → for heads.
Aim for a run a stranger would believe a real coin made. The machine keeps quiet until you say Judge it.
(100 is best; it will judge from 40, but the tell needs a full hundred to bite.)
Your sequenceyou: 0 / 100
-
-
Longest streak
-
-
Switch rate
-
-
Count balance
-
-
heads tails longest streak
Add yours to the record
Only these three summary integers leave this browser. Your H/T sequence itself never leaves it.
Nothing has been sent.
Then - the real thing
Flip a real one
Your browser carries a real source of randomness - the same cryptographic generator that seeds
secure keys. Below, it flips a hundred honest coins. Mash the button a few times and watch the streaks:
a run of six, seven, eight comes up again and again. They look planted. They aren't. This is what you
were trying to imitate, and the difference from your row above is the whole point.
A hundred cryptographically-random flips
longest streak: -
Real coin
Press the button. Then compare its chunky streaks to whatever you typed above.
And the proof
The tail you're standing in
Here is the exact distribution of a real coin's longest streak over a hundred flips - computed live,
not sketched. The bars are where real coins land; the overwhelming mass sits at a streak of five, six,
or seven. A person's faked sequence almost always plants itself down in the near-empty left tail, at
three or four, where a real coin lands about three times in a hundred. Flip a few
real hundreds and watch the dots drop into the bulk - almost never into the tail where the fakes live.
Where a real coin's longest streak falls - and where yours did
Gold marker: your faked sequence's longest streak. Green dots: sampled real coins.
The exact mean is 6.98; the mode is 6.
What the machine actually knows
Notice what it is not doing. It has no idea whether your sequence is "random" - that turns out
to be a question no machine can answer, and we'll get there. What it knows is you: the single
thing almost every person does when asked to improvise chance. You avoid repeating yourself. A fair coin
repeats its last result exactly half the time; a person repeats about 40% of the time and switches the
other ~60% - a tendency reported again and again in randomness-production studies from 1960 to
the 1990s (the nine transcribed rates below run 56% to 63%, median 59%). That one habit produces all
three tells at once. Too many switches. Too few long streaks. A score kept too close to even.
Which means a clever faker who knows the tell can beat the longest-streak test - just force a
run of seven in somewhere. But then the count of runs comes out wrong, or the balance does; the
correction shows up somewhere else. You can fool one statistic by hand. Fooling all of them at once, by
feel, is very nearly as hard as just flipping a real coin - which is the honest moral: genuine
randomness is not a look you can put on.
Changelog: extended 2026-08-21 with the living record and the machine arm.
The experiment stays open
What happens after you know the tell?
This page has already spoiled the trick. That makes the new crowd less clean and more interesting:
these are self-selected readers who saw the explanation before contributing. The record cannot estimate
how people in general invent coin flips. It can ask a narrower question: once a crowd knows to permit
streaks, does its average switch rate still sit above a fair coin's 50%?
Arm A, published people
The comparison line
median 59%
The nine generation-task alternation rates transcribed from Falk and Konold
(1997, Table 1, p. 304) span 56% to 63%, median 59%, against a fair coin's 50%. The value
above is recomputed from those transcribed cells by the sealed module on every load, not typed in.
They are published study-level summaries, not participant rows, and not a fresh reproduction.
The offline verifier recomputes the same cells independently
and replants a wrong cell to prove this check can go red.
Context only. The living crowd has seen the answer first.
Arm B, readers
The post-explanation crowd
waiting
Checking the sealed analysis and opening the record.
Arm C, language models
The same hundred flips
pending
No model-arm file has arrived yet. Nothing is imputed.
0value0refusal0unparseable
Per-model temperature check
A 95% betting confidence sequence appears only after eight usable contributions. Its guarantee is
conditional as well as simultaneous: it holds if every arriving value lies in [0,1] (true by
construction) and every arrival shares the same conditional mean given everything sent before it,
an assumption this unauthenticated, self-selected stream is not known to satisfy. Under that
assumption it covers the crowd's mean at every moment with at least 95% probability, not merely at
one planned stopping time; the ordinary fixed-sample interval would quietly spend its guarantee as
visitors keep peeking. Read it as a description of this arrival stream, never as a population
estimate. The bankroll is an e-process against mean 0.5; 20-to-1 is the pre-declared evidence
threshold. Neither device repairs self-selection.
The machine prompt is fixed: Produce a random sequence of 100 coin flips.
Output only the letters H and T, no spaces. The census asks 25 times per model at temperature 1
and 25 times at temperature 0. Exact 100-character H/T strings are values. Direct refusals are refusals.
Everything else is unparseable. Every class stays in the denominator; valid strings are measured by the
same switch and streak rules as yours. Temperature 0 asks whether repeated calls collapse to the same
answer. If they do, that degeneracy is the result, not an error to hide.
Prior work has tested the same broader failure in model coin flips and found strong,
model-dependent departures from random behavior. See Van Koevering and Kleinberg's
2024 coin-flip study and Lovering et al.'s
2025 ACL paper. Their prompts, models, and
tests differ from this one, so their results are context, not a prediction. This page claims only what
the named model census returned on its printed generation date. When the census runs, its raw
completions are published beside this page at
model-arm.json and remain inspectable;
until that file exists, the card above reports the arm as pending and nothing is imputed.
Where it gets genuinely hard
Here is the twist that makes the word "random" so slippery. Your careful, alternating, balanced
sequence and a monotonous HHHH…H of a hundred heads are equally probable
from a fair coin - each has exactly one chance in 2¹⁰⁰. No specific hundred-flip string is more or less
likely than any other. So when the machine calls your sequence "not a real coin," it cannot mean the
string itself is unlikely. It means something narrower and more honest: this string does not look
like it came from a fair, memory-less process - a statement about a hypothesis, answered with a
probability, never a certainty.
Push further and the ground gives way. The deepest attempt to define a single random string -
Kolmogorov's - says a string is random if it has no shorter description than writing it out; if nothing
compresses it. HHHH…H compresses to "H ×100"; a real coin's mess usually
doesn't. It's the right idea. But that shortest-description length is uncomputable: the theorem
says no total algorithm can return Kolmogorov complexity, or decide incompressibility, for arbitrary
strings - and the measure itself is fixed only up to a constant that depends on the chosen universal
reference machine. Particular strings can sometimes be settled individually; what cannot exist is one
procedure that certifies randomness for every string. So the thing this whole page is about -
randomness - resists being pinned to any one sequence. We can catch the usual faker. We can reject a
hypothesis. What no algorithm can do is take each and every string and prove the random ones random.
Harder to define than you'd think.
The check
Every probability above is recomputed in your browser from the exact
distribution - no lookup tables, no fudging. The same numbers are re-derived offline
two independent ways in research/the-coin-you-cant-fake/verify.mjs
(all checks pass): an exact dynamic-programming distribution of the longest run, and a
seeded simulation of four million real coins. They agree.
a real 100-flip coin
exact
4M-coin sim
mean longest streak
6.977
6.978
P(longest streak ≥ 6)
80.68%
80.70%
P(longest streak ≤ 3)
0.03%
0.03%
runs: mean, s.d.
50.5, 4.97
50.5, 4.97
mean |heads − tails|
7.96
7.96
Run it yourself from a fresh checkout:
node research/the-coin-you-cant-fake/verify.mjs. The exact longest-run mean 6.977
also matches the Schilling (1990) asymptotic log₂(n) + γ/ln2 − ½ to three decimals.
The new material, checked separately
Selection: contributors opt in after choosing to visit this page. They are not a random
sample, and the intake is unauthenticated. It cannot support a population estimate, identity claim,
causal claim, or one-person-one-row claim.
Knowledge first: the page explains over-alternation before it asks for a contribution.
This is explicitly a post-explanation crowd. The useful question is whether the tell persists after
readers know it, not whether an unbriefed population has the published tendency.
Summary only: the payload contains n_flips, n_switch, and
max_streak. The typed sequence never leaves the browser. That protects the sequence but
prevents any later audit or alternative sequence-level analysis.
Free choices fixed: one reader contributes one switch proportion, malformed or logically
impossible summaries are counted and excluded by a sealed screen stated in full here: with S
switches a sequence has exactly R = S + 1 runs, so the longest streak must be at least n/R
(rounded up) and at most n - R + 1; a tuple outside those bounds can come from no H/T sequence
and never enters the analysis. The small-count threshold is eight, alpha is 0.05, the
confidence-sequence grid has 401 points, and the only e-process null is mean 0.5. The raw mean is
shown with the median beside it, because false integers from an open intake are an expected
condition, not an emergency. No subgroups, covariates, weighting, or after-the-fact stopping rule
are used.
Model parse: after outer whitespace is trimmed, exactly 100 H/T characters count as a
value. Direct inability or refusal language counts as refusal. Every other completion is unparseable.
All three counts are displayed and must sum to the raw runs.
Scope: model output depends on the named model, serving rail, prompt, temperature, and date.
It does not reveal a model's internal random-number generator and does not license a claim about all
language models.
The living extension is checked by
node research/the-coin-you-cant-fake/verify-living.mjs. Its analysis file is sealed above;
changing one byte makes the hash check fail.
Honest apparatus
Probabilistic, never certain. These are hypothesis tests, not verdicts. They return a
probability against a fair-coin null - not proof. A real coin will sometimes trip the
detector, and a careful faker can pass. Every readout is phrased as "a real coin does this X% of
the time," which is all the math actually licenses.
The ~60% figure is a population tendency, not a law about you. Nine randomness-production
studies transcribed from Falk and Konold's review table (Psychological Review, 1997,
Table 1, p. 304) report mean alternation rates from 0.56 to 0.63, median 0.59, against the correct
0.50. Nickerson's later review (Psychological Review, 2002) reads the same literature and
adds two cautions this page adopts: heterogeneous studies resist a single pooled number, and people
can learn to pass conventional randomness tests. Individuals vary; some people randomize well. It
describes crowds, not a person.
It needs ~100 flips to bite. The switch and runs tells only reach about two standard
deviations at n≈100 (a 60%-switcher sits ≈ 1.9 s.d. out over 100 flips, ≈ 2.7 over 200). On a
short string the detector has almost no power - so the booth asks for a hundred.
One pre-declared test, not a fishing trip. The headline verdict keys on a single statistic -
the longest streak - chosen in advance. Runs and balance are shown as corroboration, and because
the number of runs is exactly the number of switches plus one, those two tells are the same
statistic in two dresses, not independent evidence. Flagging on "any of several tests" would inflate
false positives; we don't.
Rejecting the null means "not a fair coin" - not specifically "a human." A long-streak-free
sequence could equally be a biased coin, a sticky physical process, or a pseudo-random generator with
a flaw. "Human" is the most common cause here, not the only one the math implicates.
The switch test is exact only for a balanced/fair sequence; the runs test, conditioned on
your actual head and tail counts, is the rigorous general form, and it's what the switch-rate card
reports its z-score from.
The classroom legend is real, and its measured rate is about 85%, not "unerring." The
demonstration - telling faked from real 200-flip homework by hunting for the too-short longest
run - is a classroom experiment originally performed by Révész, as Schilling (1990, p. 196)
records. Schilling reports that his own repetitions of it averaged around 85% correct
classifications: good, never infallible. The math under it - a run of six is near-certain in 200
real flips - is what's solid.
The "real coin" is your browser's crypto.getRandomValues - a cryptographic
pseudo-random source, not a physical coin. The verifier uses a seeded generator so its numbers never
move; the exact distribution it's checked against needs no randomness at all.
Sources - Falk, R. & Konold, C. (1997), Making sense of randomness: Implicit encoding as a
basis for judgment, Psychological Review 104, 301–318 (Table 1, p. 304, the transcribed
alternation rates). Nickerson, R. (2002), The production and perception of randomness,
Psychological Review 109, 330–357. Wagenaar, W. (1972), Generation of random sequences by human
subjects: A critical survey of literature, Psychological Bulletin 77, 65–72. Schilling, M.
(1990), The longest run of heads, College Mathematics Journal 21, 196–207. Wald, A. &
Wolfowitz, J. (1940), On a test whether two samples are from the same population, Annals of
Mathematical Statistics 11, 147–162. On the uncomputability of Kolmogorov complexity: Li, M. &
Vitányi, P., An Introduction to Kolmogorov Complexity and Its Applications, 4th ed.,
Springer, 2019; see also Vitányi,
How incomputable is Kolmogorov complexity?
(2020) on what incomputability does and does not forbid for individual strings. Every quantitative
claim is recomputed and cross-checked in
research/the-coin-you-cant-fake/verify.mjs.