One spin, thirty-seven pockets
Roulette on this site is a single-zero wheel, and the whole of its arithmetic rests on one fact: each spin lands on one of 37 pockets with equal chance. A roulette bet is a string walked through the consequence for price — every bet returns 36 ÷ 37 = 97.30%. This article is about everything the price leaves out: how long things take, how often they cluster, and how much a session can wander.
Two things follow from the derivation. Each spin is a fresh HMAC of a fresh nonce, so spins are independent: the wheel has no memory, and every figure below is a plain power or a binomial count. And the 37 pockets are equally likely to within one part in 2⁶⁴, so the physical wheel-bias stories from Jaggers and Garcia-Pelayo have no counterpart here: there is no worn fret to find.
How long a number takes
A straight-up number wins 1 in 37 per spin, so the average wait between hits is 37 spins. Averages mislead on waiting times, because the distribution is lopsided: most gaps are shorter than 37 and a few are very long. The useful figures are the chances of seeing the number within a given stretch, which is 1 − (36 ÷ 37)ᴺ.
| SPINS | AT LEAST ONE HIT | NO HIT AT ALL |
|---|---|---|
| 10 | 23.97% | 76.03% |
| 26 | 50.95% | 49.05% |
| 37 | 63.71% | 36.29% |
| 50 | 74.59% | 25.41% |
| 100 | 93.54% | 6.46% |
| 150 | 98.36% | 1.64% |
| 200 | 99.58% | 0.42% |
| 300 | 99.97% | 0.03% |
No hit in N spins = (36 ÷ 37)ᴺ. The median wait is 26 spins, the first N at which the chance of a hit passes one half; the mean is 37. In 37 spins the number lands exactly once 37.3% of the time and two or more times 26.4%.
The row that surprises people is the third one: play your number for a full wheel’s worth of spins, 37 of them, and more than a third of the time it never comes. That is not bad luck; it is the ordinary shape of a 1-in-37 event. A hundred spins leaves a 6.5% chance of an empty run, one session in fifteen, and each of those sessions costs 100 units for nothing back.
The same table describes zero, which is just another pocket. Zero lands at least once in 37 spins 63.7% of the time, in 74 spins 86.8%, in 10 spins 24.0%. A table that has not shown zero for fifty spins is not “due” — the next spin is 1 ÷ 37 exactly as it was — and a table that showed it twice in ten is not “hot”. The gambler’s fallacy is the belief that the wheel keeps a ledger; the hash does not.
What a streak is worth
Colour runs are the streaks players remember, and on a single-zero wheel they are less rare than they feel. Red wins 18 ÷ 37 of spins; the chance of k reds in a row is (18 ÷ 37)ᵏ. The losing side of an even-money bet is 19 ÷ 37, because zero counts against it, so losing runs are slightly likelier than winning ones of the same length.
| RUN LENGTH | SAME COLOUR (WIN) RUN | LOSING RUN (INCL. ZERO) | A LOSING RUN THIS LONG STARTS ABOUT ONCE IN |
|---|---|---|---|
| 3 | 11.51% | 13.54% | 15 spins |
| 5 | 2.72% | 3.57% | 58 spins |
| 8 | 0.31% | 0.48% | 425 spins |
| 10 | 0.074% | 0.128% | 1,610 spins |
| 13 | 0.009% | 0.017% | 12,000 spins |
| 15 | 0.002% | 0.005% | 45,000 spins |
Win run = (18 ÷ 37)ᵏ, losing run = (19 ÷ 37)ᵏ. The last column is 1 ÷ ((19 ÷ 37)ᵏ × (18 ÷ 37)), the average spacing between the starts of losing runs of at least k. A dozen or column misses five times in a row 14.1% of the time and ten times 1.98%.
Eight losses in a row is the number that matters to anyone doubling up, because it is where a martingale started at one unit needs a 256-unit stake and 255 units already on the table. It arrives about once every 425 spins — an evening, at a live pace, or twenty minutes at the pace of a demo table. The martingale, priced works through what that costs; the short version is that the streak is not the risk, the table limit is.
Streaks are also worth nothing as information. A run of eight reds changes the next spin’s red chance from 18 ÷ 37 to 18 ÷ 37. The reason streaks feel meaningful is that a 0.48% event is rare enough to remember and common enough to see, and memory keeps the streaks and discards the thousands of unremarkable spins between them.
The same price, different swings
Because tiles × multiplier equals 36 for every kind of bet, every bet on this wheel returns 97.30% and costs 2.7 units per 100 units staked. What differs, and differs enormously, is the swing — how far a session of a given length can end from that expected loss.
| BET | POCKETS | WIN CHANCE | PAYS | RETURN | SWING PER SPIN | SWING OVER 100 SPINS |
|---|---|---|---|---|---|---|
| Straight | 1 | 2.70% | ×36 | 97.30% | 5.84 | 58 |
| Split | 2 | 5.41% | ×18 | 97.30% | 4.07 | 41 |
| Street | 3 | 8.11% | ×12 | 97.30% | 3.28 | 33 |
| Corner / first four | 4 | 10.81% | ×9 | 97.30% | 2.79 | 28 |
| Six line | 6 | 16.22% | ×6 | 97.30% | 2.21 | 22 |
| Dozen / column | 12 | 32.43% | ×3 | 97.30% | 1.40 | 14 |
| Red, black, odd, even, low, high | 18 | 48.65% | ×2 | 97.30% | 1.00 | 10 |
Swing per spin is the standard deviation of one spin’s result per unit staked, √(payout² × chance − 0.973²); over N spins it grows as √N. Expected loss over 100 one-unit spins is 2.7 units on every row.
Read the last two columns together. A hundred one-unit spins on red lose 2.7 units on average with a standard deviation of 10, so ending anywhere between about 20 down and 15 up is unremarkable and the expected loss is a quarter of the noise. The same hundred spins on a single number lose the same 2.7 units on average with a standard deviation of 58: the typical outcome is either a loss of most of the hundred or one or two 36-unit hits that leave the session well ahead. The price is identical; the experience is not. Risk of ruin turns this into how long a given bankroll lasts on each bet.
Single zero, 37 pockets, every bet returns 97.30% — the pocket is floor(u × 37) from the round’s hash and you can check itRoulette →
Checking a spin yourself
- Before you play, the fairness panel shows the SHA-256 fingerprint of the server seed. Rotate your seed pair afterwards to reveal the seed and confirm the fingerprint.
- Compute HMAC-SHA256 with the server seed as the key and “clientSeed-nonce-0” as the message; a spin uses cursor 0 only.
- Take the first eight bytes of the digest as hi ÷ 2³² + lo ÷ 2⁶⁴ to get u, then floor(u × 37). That is the pocket, and every bet on the table settles from it.
The open-source verifier does the three steps in one command, `betkyo-verify roulette <serverSeed> <clientSeed> <nonce>`, and prints the pocket. If it matches the spin you were paid on, the pocket was fixed before you placed a chip — which, as what a hash commitment proves explains, is what the commitment guarantees and all it guarantees. The 1-in-37 is guaranteed by the published derivation, not by the hash.
What are the odds of hitting a single number in roulette?
1 in 37 per spin on this single-zero wheel, 2.70%. The number lands at least once in 37 spins 63.7% of the time and in 100 spins 93.5% of the time; the median wait is 26 spins and the mean is 37.
How many spins does it take for a number to come up?
On average 37, but half of all waits are 26 spins or fewer and a few are very long: no hit in 100 spins happens 6.5% of the time, no hit in 200 spins 0.4%.
What are the odds of red coming up 10 times in a row?
(18 ÷ 37)¹⁰ = 0.074%, about 1 in 1,350. A losing run of ten on an even-money bet, which includes zero, is 0.128%, about 1 in 780. Neither changes the next spin, which is 18 ÷ 37 red regardless.
How often does zero come up in roulette?
Once in 37 spins on average. Zero appears at least once in 37 spins 63.7% of the time and in 74 spins 86.8%; it is absent from a full 37-spin cycle more than a third of the time.
Is a straight-up bet worse than red?
Not in price: both return 97.30% on this wheel. A straight-up bet is far more volatile — a standard deviation of 5.84 stakes a spin against 1.00 for red — so it produces long dry runs and occasional ×36 wins rather than a steady drift.
Can I verify a roulette spin?
Yes. HMAC-SHA256 of “clientSeed-nonce-0” keyed by the revealed server seed, first eight bytes as a fraction of 2⁶⁴, times 37 and floored, gives the pocket; the verifier’s roulette command does it in one step.
- Betkyo engine source: deriveRouletteSpin(), rouletteNumbersOf() and rouletteMultOf() in roulette/derive.ts (pocket = floor(u × 37) at cursor 0; integer total-return multipliers ×36 … ×2); demoRouletteSpin() in _shared/demoLocal.ts; RouletteEngine.derivePocket() and settle() in the house service (U64SeedStream intBelow(37); stake × multiplier per covering key)
- Exact calculations written for this article: (36 ÷ 37)ᴺ waiting times and the binomial counts for 37 spins, (18 ÷ 37)ᵏ and (19 ÷ 37)ᵏ run probabilities and their mean spacing, per-spin standard deviation for every bet kind and its √N growth
- Betkyo provably-fair verifier (GitHub, MIT): the roulette command reproduces the pocket from serverSeed, clientSeed and nonce



