MATH OF LUCK

Roulette hit rates, priced: how long a number takes and what a streak is worth

Illustration for “Roulette hit rates, priced: how long a number takes and what a streak is worth”
On this engine’s European roulette every pocket lands 1 in 37 per spin. A straight-up number takes 37 spins on average but only 26 to have a 50% chance of appearing; it is absent from 100 spins 6.5% of the time and from 200 spins 0.4%. Red comes up five times in a row 2.7% of the time and ten times in a row 0.07%; an even-money bet loses eight in a row 0.48%, roughly once every 207 spins. Zero has landed at least once in 37 spins 63.7% of the time — so it is absent from a full wheel’s worth of spins more than a third of the time. Every bet returns 97.30%, but the swing is not the same: over 100 one-unit spins the expected loss is 2.7 units on every bet, while the standard deviation is about 10 units on red, 14 on a dozen and 58 on a straight-up number.
BETKYO RESEARCHPUBLISHED 2026-09-22UPDATED 2026-09-228 MIN READ

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.

ENGINE-VERIFIEDderiveRouletteSpin() in roulette/derive.ts: the pocket is floor(u × 37) from cursor 0 of the round’s HMAC, u = hi ÷ 2³² + lo ÷ 2⁶⁴ (u64()); the server port RouletteEngine.derivePocket() uses U64SeedStream(...).intBelow(37). Settlement pays stake × multiplier per covering key (×36 straight, ×18 split, ×12 street, ×9 corner and first four, ×6 six line, ×3 dozen and column, ×2 even chances); the multipliers are whole numbers, so nothing is lost to rounding. One nonce settles the whole table in one spin.

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)ᴺ.

Chance that a chosen number lands at least once, betting it every spin
SPINSAT LEAST ONE HITNO HIT AT ALL
1023.97%76.03%
2650.95%49.05%
3763.71%36.29%
5074.59%25.41%
10093.54%6.46%
15098.36%1.64%
20099.58%0.42%
30099.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.

Runs on an even-money bet, single-zero wheel
RUN LENGTHSAME COLOUR (WIN) RUNLOSING RUN (INCL. ZERO)A LOSING RUN THIS LONG STARTS ABOUT ONCE IN
311.51%13.54%15 spins
52.72%3.57%58 spins
80.31%0.48%425 spins
100.074%0.128%1,610 spins
130.009%0.017%12,000 spins
150.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.

Every bet kind, priced and measured for swing
BETPOCKETSWIN CHANCEPAYSRETURNSWING PER SPINSWING OVER 100 SPINS
Straight12.70%×3697.30%5.8458
Split25.41%×1897.30%4.0741
Street38.11%×1297.30%3.2833
Corner / first four410.81%×997.30%2.7928
Six line616.22%×697.30%2.2122
Dozen / column1232.43%×397.30%1.4014
Red, black, odd, even, low, high1848.65%×297.30%1.0010

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.

Roulette here is a solo table with no server clock — you spin when you press Spin — so “per hour” depends entirely on the player. At a spin every ten seconds, 100 spins is under twenty minutes; the table above is the honest unit.
Roulette, with every spin verifiable
Single zero, 37 pockets, every bet returns 97.30% — the pocket is floor(u × 37) from the round’s hash and you can check it
Roulette →

Checking a spin yourself

  1. 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.
  2. Compute HMAC-SHA256 with the server seed as the key and “clientSeed-nonce-0” as the message; a spin uses cursor 0 only.
  3. 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.

FAQ

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.

SOURCES & REFERENCES
  • 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
THE GAMES IN THIS ARTICLE
Betkyo Research — written by the team that builds these games. Every probability quoted in the Journal is derived from our engine source or a cited reference, never copied from another site. Figures are re-checked whenever the engines change.

18+ · PLAY RESPONSIBLY · THE JOURNAL IS EDITORIAL CONTENT, NOT BETTING ADVICE