MATH OF LUCK

Limbo odds, priced: the win chance behind every target multiplier

Illustration for “Limbo odds, priced: the win chance behind every target multiplier”
On this engine’s limbo the win chance at any target is 99 divided by the target: 90.00% at ×1.10, 49.50% at ×2, 9.90% at ×10, 0.99% at ×100 and 0.0099%, one in 10,101, at the ×10,000 cap. Because the target is also the payout, every target returns exactly 99.00% of the stake and the house edge is 1.00% at every multiplier, from ×1.01 to ×10,000 — no target is better value than another, only more volatile. The rounding in the engine’s formula changes the number you see, not the odds you get. The number lands below ×1.01, where nothing can win, 1.98% of the time; its median is ×1.98; it reaches ×10 or more once in ten rounds and ×100 or more once in a hundred. Chasing ×100 at one bet a round, you have a 63% chance of at least one hit in 100 rounds and a 5% chance of none in 300.
BETKYO RESEARCHPUBLISHED 2026-09-18UPDATED 2026-09-188 MIN READ

One line of arithmetic

Limbo has no board, no cards and no wheel. You type a target multiplier, the engine draws a number, and you win if the number is at least your target — in which case you are paid your target times your stake. That is the entire game, and it makes limbo the easiest casino game there is to price, because the number comes from one formula with one random input.

ENGINE-VERIFIEDcurve100() in _shared/rng.ts: the outcome in hundredths is floor((0.99 ÷ (1 − u)) × 100), clamped to the range 100 to 1,000,000, where u is the uniform number in [0, 1) read from the round’s HMAC — the first eight bytes of the digest as hi ÷ 2³² + lo ÷ 2⁶⁴ (u64()). demoLimboBet() in _shared/demoLocal.ts draws u at cursor 0, sets win = outcome100 ≥ target100 and pays stake × target100 ÷ 100 floored to the cent. limboGame.tsx accepts targets from 101 to 1,000,000 hundredths (×1.01 to ×10,000.00) and shows the win chance as 99 ÷ target.

Read the formula from the inside out. The random number u is spread evenly between 0 and 1. Dividing 0.99 by 1 − u turns that even spread into a curve: u near 0 gives a number near ×0.99, u near 1 gives a number that runs away towards infinity. The ×100 and the floor turn it into a figure with two decimals, and the clamp pins it between ×1.00 and ×10,000.00. The 0.99 is the house edge, and it is the only place the edge lives.

The win chance at every target

You win at target T when floor(99 ÷ (1 − u)) is at least T, written in hundredths. Because T is a whole number of hundredths, the floor makes no difference to that comparison: a value of 199.7 floors to 199 and misses a target of 200, exactly as 199.7 itself would. So the condition is simply 99 ÷ (1 − u) ≥ T, which rearranges to u ≥ 1 − 99 ÷ T. The chance of a uniform number landing there is 99 ÷ T, and that is the whole answer.

Win chance, odds and volatility at common targets
TARGETWIN CHANCEONE WIN INRETURNHOUSE EDGESWING PER UNIT STAKED
×1.0198.02%1.02 rounds99.00%1.00%0.14
×1.1090.00%1.1199.00%1.00%0.33
×1.2082.50%1.2199.00%1.00%0.46
×1.5066.00%1.5299.00%1.00%0.71
×1.9850.00%2.0099.00%1.00%0.99
×2.0049.50%2.0299.00%1.00%1.00
×3.0033.00%3.0399.00%1.00%1.41
×5.0019.80%5.0599.00%1.00%1.99
×109.90%10.199.00%1.00%2.99
×204.95%20.299.00%1.00%4.34
×501.98%50.599.00%1.00%6.97
×1000.99%10199.00%1.00%9.90
×1,0000.099%1,01099.00%1.00%31.4
×10,0000.0099%10,10199.00%1.00%99.5

Win chance = 99 ÷ target, exact. Return = target × win chance = 0.99 at every row. Swing is the standard deviation of one round’s result per unit staked, √(0.99 × target − 0.9801); it is the number that grows, not the price.

The middle two columns are the point of the table, and they do not move. The target is both the hurdle and the payout, so raising it lowers the win chance in exactly the proportion that raises the prize, and the product stays at 0.99. A player who sits at ×1.10 and a player who fires at ×1,000 are paying the same 1% for every unit they stake; one of them is paying it in a steady trickle and the other in long droughts broken by a windfall. The last column measures the difference. At ×2 a round’s result swings by about one stake; at ×1,000, by thirty-one stakes; at the cap, by a hundred.

One row is worth a second look. At ×1.98 the win chance is exactly 50%, which makes ×1.98 the median outcome: half of all rounds end above it and half below. The round-number ×2.00 is a coin flip with a 0.5-point handicap, 49.50%, and that half point is where the 1% edge sits at that target. Every other target hides the same edge in the same way — a fair game would pay ×2.0202 for a 49.5% chance, and the engine pays ×2.

This is the part of limbo that differs from a dice game with a two-decimal multiplier. There, the payout is derived from the chosen chance and rounded, and the rounding can cost the player a few hundredths of a point at some settings. In limbo the player names the payout directly, in hundredths, and the formula compares the drawn number against that same figure; there is no second rounding to pay for. The floor in the formula decides only which two decimals appear on screen. The verifier article explains why that single floor has to be reproduced exactly when you check a round.

Where the number lands when nobody is aiming

The same formula describes the drawn number itself, regardless of any target. The chance that it reaches at least ×x is 0.99 ÷ x, for any x from ×1.01 upwards, and that gives the whole distribution of what the screen shows.

Where the drawn multiplier lands
RANGESHARE OF ROUNDSABOUT
×1.00 (below every target)1.98%1 in 50.5
×1.01 to ×1.4932.02%1 in 3.1
×1.50 to ×1.9916.50%1 in 6.1
×2.00 to ×2.9916.50%1 in 6.1
×3.00 to ×4.9913.20%1 in 7.6
×5.00 to ×9.999.90%1 in 10.1
×10 to ×99.998.91%1 in 11.2
×100 to ×999.990.891%1 in 112
×1,000 to ×9,999.990.0891%1 in 1,122
×10,000.00 (the cap)0.0099%1 in 10,101

Each row is 0.99 ÷ (lower bound) minus 0.99 ÷ (upper bound). The first row is the chance that 99 ÷ (1 − u) falls below 101 hundredths, u < 2 ÷ 101. The last row is every draw that the clamp pins to 1,000,000 hundredths. Rows sum to 100%.

Two of these rows explain most of what a limbo session feels like. About one round in fifty shows ×1.00, a number no target can beat: the 0.99 in the formula means the curve starts below ×1.01, and the lowest 1.98% of draws never clear it. And about one round in eleven shows ×10 or more, which is frequent enough to be seen several times an hour and to make a high target feel reachable. It is reachable — one round in a hundred and one clears ×100 — but the table says how often, and “often enough to remember” is not the same as often.

The rounds you are not betting on are drawn from this same distribution, which is why a screen full of recent results carries no information about the next one. Every round is a fresh HMAC of a fresh nonce; a ×500 in the history makes the next ×500 exactly as likely as it was before, 0.198%. That is the gambler’s fallacy in its purest form, because here the independence is not a statistical assumption but a property of the hash.

What chasing a big multiplier costs

Because the edge is the same everywhere, the choice of target is a choice about variance, and variance has a price that is easy to state: how many rounds you should expect to wait, and how likely a long wait is. With win chance p per round, the chance of at least one win in N rounds is 1 − (1 − p)ᴺ.

Chance of at least one win when betting the same target every round
TARGETROUNDSAT LEAST ONE WINNO WIN AT ALL
×21099.89%0.11%
×102087.57%12.43%
×105099.46%0.54%
×10010063.03%36.97%
×10030094.95%5.05%
×1,0001,00062.86%37.14%
×1,0003,00094.88%5.12%

1 − (1 − 99 ÷ T)ᴺ. The pattern repeats at every scale: betting the target’s own number of rounds (100 rounds at ×100, 1,000 at ×1,000) gives about a 63% chance of one hit, and three times that many gives about 95%.

Put a stake on it and the arithmetic turns cold. A hundred one-unit bets at ×100 cost 100 units to place and return 99 on average — the 1% again — but the average is made of a 63% chance of getting back roughly 100 and a 37% chance of getting back nothing. The player who does hit once in those hundred rounds is not ahead by much; the player who hits twice is up a lot, and the one who hits zero times has lost the whole hundred. Nothing about the target changes the 1% you pay per unit. Everything about it changes how the results are distributed among players.

The low-target version of the same trap is the martingale: bet ×2, double after each loss, and collect one unit per win. The win chance at ×2 is 49.50%, a losing run of ten in a row happens 0.11% of the time, and the eleventh bet is 1,024 units. The martingale, priced works that through on a roulette wheel; the limbo figures are within a tenth of a point of it. Risk of ruin gives the general formula for how long any fixed-stake plan lasts against a 1% edge.

One practical detail from the demo settlement: the payout is stake × target floored to the cent, so a stake of 0.37 at ×1.23 pays 0.45, not 0.4551. On whole-unit stakes with a two-decimal target the product is already exact and nothing is lost; on small odd stakes the fraction of a cent is. Real-money rounds settle in the coin’s own precision.
Limbo, with every round verifiable
Type a target from ×1.01 to ×10,000 — the win chance is 99 ÷ target and it is shown before you bet
Limbo →

Checking a round 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 itself and confirm the fingerprint.
  2. Compute HMAC-SHA256 with the server seed as the key and “clientSeed-nonce-0” as the message; the limbo round uses cursor 0.
  3. Take the first eight bytes of the digest as hi ÷ 2³² + lo ÷ 2⁶⁴ to get u, then floor(0.99 ÷ (1 − u) × 100), clamped to 100–1,000,000. That is the outcome in hundredths, and it should match the round to the last digit.

The open-source verifier does the three steps in one command, `betkyo-verify limbo <serverSeed> <clientSeed> <nonce>`, and prints the outcome in hundredths. If it matches the round you were paid on, the number was fixed before you typed your target — which is what a commitment proves, and all it proves; what a hash commitment proves draws that line carefully.

FAQ

What are the odds of winning in limbo?

On this engine, 99 divided by your target: 49.50% at ×2, 9.90% at ×10, 0.99% at ×100 and 0.0099% (one in 10,101) at the ×10,000 cap. The formula is exact because the drawn number is floor(99 ÷ (1 − u)) and the target is a whole number of hundredths.

What is the house edge in limbo?

1.00% at every target. The win chance is 99 ÷ target and the payout is the target, so every bet returns 99.00% of the stake on average. No target multiplier is better value than another; a higher target only makes the results swing more.

What is the best target multiplier for limbo?

There is no better target in expectation — all of them cost 1% per unit staked. Low targets like ×1.10 or ×1.50 pay small amounts often; high targets pay rarely and big. Choose by how much variance you want, not by value, and remember that at ×100 you have a 37% chance of no win at all in 100 rounds.

How often does limbo crash at 1.00?

1.98% of rounds, about one in fifty. The formula starts at 0.99 ÷ (1 − u), so the lowest 1.98% of draws produce a number below ×1.01, and no target can win on those rounds.

Is ×2 in limbo a 50/50 bet?

Not quite: 49.50%. The exact 50% point is ×1.98, which is the median outcome. The half-point gap between ×1.98 and ×2.00 is the house edge at that target.

Does the rounding in the formula cost the player anything?

No. The floor in floor(99 ÷ (1 − u)) only decides the two decimals shown; because targets are whole hundredths, floor(x) ≥ T exactly when x ≥ T, so the win chance is 99 ÷ target without any rounding loss. The demo payout is floored to the cent, which matters only on small odd stakes.

SOURCES & REFERENCES
  • Betkyo engine source: curve100() and u64() in _shared/rng.ts (outcome = floor(0.99 ÷ (1 − u) × 100) clamped to 100–1,000,000; u from the first eight digest bytes); demoLimboBet() in _shared/demoLocal.ts (cursor 0, win = outcome100 ≥ target100, payout floored to cents); target range and the 99 ÷ target win-chance display in limbo/limboGame.tsx
  • Exact calculations written for this article: win chance 99 ÷ T for every target, the outcome distribution 0.99 ÷ x, per-round standard deviation and at-least-one-win probabilities; cross-checked by replaying 400,000 rounds of the engine’s HMAC stream through curve100() (×10: 9.86% simulated vs 9.90% exact; below ×1.01: 1.97% vs 1.98%)
  • Betkyo provably-fair verifier (GitHub, MIT): the limbo command reproduces the outcome 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