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.
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.
| TARGET | WIN CHANCE | ONE WIN IN | RETURN | HOUSE EDGE | SWING PER UNIT STAKED |
|---|---|---|---|---|---|
| ×1.01 | 98.02% | 1.02 rounds | 99.00% | 1.00% | 0.14 |
| ×1.10 | 90.00% | 1.11 | 99.00% | 1.00% | 0.33 |
| ×1.20 | 82.50% | 1.21 | 99.00% | 1.00% | 0.46 |
| ×1.50 | 66.00% | 1.52 | 99.00% | 1.00% | 0.71 |
| ×1.98 | 50.00% | 2.00 | 99.00% | 1.00% | 0.99 |
| ×2.00 | 49.50% | 2.02 | 99.00% | 1.00% | 1.00 |
| ×3.00 | 33.00% | 3.03 | 99.00% | 1.00% | 1.41 |
| ×5.00 | 19.80% | 5.05 | 99.00% | 1.00% | 1.99 |
| ×10 | 9.90% | 10.1 | 99.00% | 1.00% | 2.99 |
| ×20 | 4.95% | 20.2 | 99.00% | 1.00% | 4.34 |
| ×50 | 1.98% | 50.5 | 99.00% | 1.00% | 6.97 |
| ×100 | 0.99% | 101 | 99.00% | 1.00% | 9.90 |
| ×1,000 | 0.099% | 1,010 | 99.00% | 1.00% | 31.4 |
| ×10,000 | 0.0099% | 10,101 | 99.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.
| RANGE | SHARE OF ROUNDS | ABOUT |
|---|---|---|
| ×1.00 (below every target) | 1.98% | 1 in 50.5 |
| ×1.01 to ×1.49 | 32.02% | 1 in 3.1 |
| ×1.50 to ×1.99 | 16.50% | 1 in 6.1 |
| ×2.00 to ×2.99 | 16.50% | 1 in 6.1 |
| ×3.00 to ×4.99 | 13.20% | 1 in 7.6 |
| ×5.00 to ×9.99 | 9.90% | 1 in 10.1 |
| ×10 to ×99.99 | 8.91% | 1 in 11.2 |
| ×100 to ×999.99 | 0.891% | 1 in 112 |
| ×1,000 to ×9,999.99 | 0.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)ᴺ.
| TARGET | ROUNDS | AT LEAST ONE WIN | NO WIN AT ALL |
|---|---|---|---|
| ×2 | 10 | 99.89% | 0.11% |
| ×10 | 20 | 87.57% | 12.43% |
| ×10 | 50 | 99.46% | 0.54% |
| ×100 | 100 | 63.03% | 36.97% |
| ×100 | 300 | 94.95% | 5.05% |
| ×1,000 | 1,000 | 62.86% | 37.14% |
| ×1,000 | 3,000 | 94.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.
Type a target from ×1.01 to ×10,000 — the win chance is 99 ÷ target and it is shown before you betLimbo →
Checking a round 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 itself and confirm the fingerprint.
- Compute HMAC-SHA256 with the server seed as the key and “clientSeed-nonce-0” as the message; the limbo round uses cursor 0.
- 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.
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.
- 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



