MATH OF LUCK

Pagoda, priced: nine floors, three difficulties and the cents the ladder drops

Illustration for “Pagoda, priced: nine floors, three difficulties and the cents the ladder drops”
On this engine’s Pagoda a floor has 4, 3 or 2 tiles (Easy, Medium, Hard) with exactly one trap, so a floor is cleared 75%, 66.7% or 50% of the time and the top of nine floors is reached 7.5%, 2.6% or 0.2% of the time — 1 in 13, 1 in 38 and 1 in 512. The ladder is 0.99 × (tiles ÷ (tiles − 1))ᵏ, floored to cents: Easy ×1.32 … ×13.18, Medium ×1.48 … ×38.05, Hard ×1.98 … ×506.88. Because of the flooring the return is exactly 99.00% on every Hard rung, between 98.72% and 99.00% on Easy, and between 98.67% and 98.99% on Medium; the cheapest rungs on the board are Medium floors one and two, at 98.67%. Climbing changes swing, not price: a Hard cash-out after nine floors pays 506.88 times the stake and swings by 22 stakes per round.
BETKYO RESEARCHPUBLISHED 2026-09-23UPDATED 2026-09-238 MIN READ

One trap per floor

Pagoda is a climb. Each of the nine floors shows a row of tiles, exactly one of which is a trap; pick a safe tile and you rise a floor, pick the trap and the stake is gone. Between floors you may cash out at the ladder value for the floors already cleared, and clearing the ninth floor pays the top of the ladder automatically. The difficulty is the number of tiles per floor: four on Easy, three on Medium, two on Hard. Designing Pagoda’s ladder explained why the ladder is shaped the way it is; this article prices it rung by rung and checks the promise it makes.

ENGINE-VERIFIEDPagodaDerivation.kt: FLOORS = 9; Difficulty.EASY(4), MEDIUM(3), HARD(2). trapAt(): u = first 8 bytes of HMAC-SHA256(serverSeed, “clientSeed-nonce-floor”) ÷ 2⁶⁴, trap = floor(u × tiles), clamped to 0 … tiles − 1, one cursor per floor. The whole layout is fixed by the seed pair and nonce before the first pick; the round is stateless and can be recomputed from (serverSeed, clientSeed, nonce, difficulty, picks) at any time.

Two consequences of the derivation set up everything below. The trap positions are fixed when the round starts, so which tile you press never changes the odds — a floor is a (tiles − 1) in tiles draw whatever your habit. And each floor uses its own HMAC cursor, so the floors are independent: clearing k of them in a row has probability ((tiles − 1) ÷ tiles)ᵏ, a plain power.

The ladder, priced

The engine builds the ladder from the same power. After k cleared floors the fair multiplier — the one that would return every stake in the long run — is (tiles ÷ (tiles − 1))ᵏ, and the engine starts from 0.99 instead of 1 and multiplies by tiles ÷ (tiles − 1) once per floor. That is a single 1% haircut applied once, not once per floor: the Hard ladder doubles every floor, the Easy ladder grows by a third, and the target return at every rung is 99%.

ENGINE-VERIFIEDPagodaDerivation.mult100(): m = 0.99; repeat floorsCleared times: m = m × tiles ÷ (tiles − 1), each division at scale 12, HALF_UP; result = floor(m × 100) as an integer number of hundredths. ladder100() lists the nine values. OriginalPagodaService.applyEarned(): payout = stake × (mult100 ÷ 100) with the multiplier taken to two decimal places, FLOOR. A cash-out after k floors pays mult100(k); clearing floor nine settles as TOP at mult100(9).
Easy (4 tiles): chance of clearing k floors, the engine multiplier and the return at that cash-out
FLOORS CLEAREDCHANCEONE INFAIR MULTIPLIERENGINE PAYSRETURN
175.00%1.33×1.3333×1.3299.00%
256.25%1.78×1.7778×1.7699.00%
342.19%2.37×2.3704×2.3498.72%
431.64%3.16×3.1605×3.1298.72%
523.73%4.21×4.2140×4.1798.96%
617.80%5.62×5.6187×5.5698.96%
713.35%7.49×7.4915×7.4198.91%
810.01%9.99×9.9887×9.8898.91%
9 (top)7.51%13.32×13.3183×13.1898.96%

Chance = (3 ÷ 4)ᵏ. Fair multiplier = 1 ÷ chance. Return = chance × engine multiplier. The “engine pays” column is ladder100(EASY) ÷ 100, reproduced from the source formula.

Medium (3 tiles): the same columns
FLOORS CLEAREDCHANCEONE INFAIR MULTIPLIERENGINE PAYSRETURN
166.67%1.50×1.5000×1.4898.67%
244.44%2.25×2.2500×2.2298.67%
329.63%3.38×3.3750×3.3498.96%
419.75%5.06×5.0625×5.0198.96%
513.17%7.59×7.5938×7.5198.90%
68.78%11.39×11.3906×11.2798.94%
75.85%17.09×17.0859×16.9198.97%
83.90%25.63×25.6289×25.3798.99%
9 (top)2.60%38.44×38.4434×38.0598.98%

Chance = (2 ÷ 3)ᵏ. Floors one and two are the cheapest rungs anywhere on the board: 0.99 × 1.5 = 1.485 is floored to ×1.48, and 0.99 × 2.25 = 2.2275 to ×2.22, each giving up a third of a cent per stake.

Hard (2 tiles): the same columns
FLOORS CLEAREDCHANCEONE INFAIR MULTIPLIERENGINE PAYSRETURN
150.00%2×2×1.9899.00%
225.00%4×4×3.9699.00%
312.50%8×8×7.9299.00%
46.25%16×16×15.8499.00%
53.13%32×32×31.6899.00%
61.56%64×64×63.3699.00%
70.78%128×128×126.7299.00%
80.39%256×256×253.4499.00%
9 (top)0.20%512×512×506.8899.00%

Chance = (1 ÷ 2)ᵏ. Every Hard multiplier is 0.99 × 2ᵏ, which is an exact number of cents for every k up to nine, so nothing is floored away and every rung returns exactly 99.00%.

Read across the three tables and the design shows through. Hard is the pure version of the game: fair odds doubled every floor, a single 1% taken once, 99.00% at every rung to the cent. Easy and Medium are the same design with one arithmetic wrinkle, which is the subject of the next section, and the wrinkle is worth at most a third of a cent per stake.

Where the cents go

Designing Pagoda’s ladder said the game pays exactly 99% at every cash-out point. That is true of the formula and not quite true of the number on the screen. The engine computes 0.99 × (4 ÷ 3)ᵏ or 0.99 × (3 ÷ 2)ᵏ to twelve decimals, then floors the result to whole hundredths before it is shown or paid. On Easy and Medium those powers are not exact cents, so the floor removes between 0.1 and 0.9 of a cent from each multiplier, and the return at that rung falls below 99% by the same fraction times the chance of reaching it.

The fraction of a cent the floor removes, and what it costs
RUNGUNFLOOREDENGINE PAYSCENTS DROPPEDRETURN
Easy 3×2.3467×2.340.6798.72%
Easy 4×3.1289×3.120.8998.72%
Easy 8×9.8888×9.880.8898.91%
Easy 9×13.1851×13.180.5198.96%
Medium 1×1.4850×1.480.5098.67%
Medium 2×2.2275×2.220.7598.67%
Medium 5×7.5178×7.510.7898.90%
Medium 9×38.0589×38.050.8998.98%
Hard, any0.99 × 2ᵏsame099.00%

Unfloored = 0.99 × fair multiplier. Return = chance × engine multiplier. The loss is largest in return terms on the low rungs, where the chance of being paid is high: half a cent at Medium floor one is paid on two rounds in three, so it costs 0.33% of the stake; nine-tenths of a cent at Medium floor nine is paid once in 38 rounds and costs 0.02%.

So the honest statement is: Pagoda returns 99.00% on every Hard rung and on Easy floors one and two, and between 98.67% and 98.99% everywhere else, with the shortfall never larger than a third of a stake per hundred. The design-notes article now carries this correction. The flooring itself is a deliberate choice rather than an accident: the ladder must be displayed and paid in cents, and the engine rounds once, in one direction, so the number shown before you pick is the number you are paid.

The direction matters for a second reason. Flooring makes every rung an equal or worse deal for the player than the formula, never better, so no sequence of cash-outs can be worth more than 99% of the stake in expectation. A game that rounded half-up would have some rungs above 99% and invite players to fish for them; a game that floors has none.

Cashing out or climbing

Because every rung costs about the same 1%, the choice of when to cash out is not a choice about price. It is a choice about how the 1% is collected — in small frequent pieces or in one rare large one — and the tables above give the shape. On Easy the top pays ×13.18 and is reached once in 13 rounds; on Hard it pays ×506.88 and is reached once in 512. A player who never cashes out and always climbs busts on the first floor half the time on Hard, and on average clears 1.00 floors per round; on Easy, 2.77.

What a fixed cash-out point looks like over many rounds
STRATEGYWIN CHANCEPAYSRETURNSWING PER ROUNDSWING OVER 100 ROUNDS
Easy, cash out after 175.0%×1.3299.00%0.575.7
Easy, cash out after 523.7%×4.1798.96%1.7718
Easy, climb to the top7.5%×13.1898.96%3.4735
Medium, cash out after 329.6%×3.3498.96%1.5315
Medium, climb to the top2.6%×38.0598.98%6.0661
Hard, cash out after 150.0%×1.9899.00%0.9910
Hard, cash out after 46.25%×15.8499.00%3.8338
Hard, climb to the top0.20%×506.8899.00%22.4224

Swing per round is the standard deviation of one round’s result per unit staked, √(chance × pays² − return²); over N rounds it grows as √N. Expected loss over 100 one-unit rounds is about 1 unit for every row; the swing column is how far a real 100-round session usually lands from that.

The last row is the one to sit with. A Hard climb to the top costs the same 1 unit per 100 rounds as cashing out after one floor, but its swing over those 100 rounds is 224 units: the typical outcome of 100 attempts is either nothing at all — 82% of 100-round sessions never reach the top — or one payout of 506.88. Risk of ruin puts numbers on how long a bankroll survives that shape; the price it is surviving is the same 1% either way.

One more thing the ladder does not reward is hesitation. Cashing out after k floors and starting a new round is priced identically to continuing, because the next floor is a fresh (tiles − 1) in tiles draw at a multiplier that already includes the haircut. There is no floor at which stopping is “due” and none at which the trap is more likely than one in tiles; the traps were placed before the first pick and do not move.

Checking a round

  1. From the round’s fairness panel take the revealed server seed, the client seed and the nonce, and the difficulty and picks from the result.
  2. For each floor f from 0 to 8 compute HMAC-SHA256 keyed by the server seed over “clientSeed-nonce-f”, take the first 8 bytes as a fraction of 2⁶⁴, multiply by the tile count and floor. That is the trap on floor f.
  3. Compare with your picks: every pick before the bust must differ from that floor’s trap, and the bust pick, if any, must equal it. For the payout, multiply 0.99 by tiles ÷ (tiles − 1) once per cleared floor at twelve decimals and floor to cents; stake × that number, floored to two places, is the settlement.

The open-source verifier’s pagoda command does the three steps in one call. If a floor’s trap disagrees with the engine, check the cursor first — Pagoda draws one cursor per floor, floor 0 for the ground floor, not one draw for the whole layout.

FAQ

What are the odds of reaching the top in Pagoda?

Nine floors in a row: 7.5% on Easy (1 in 13.3), 2.6% on Medium (1 in 38.4) and 0.2% on Hard (1 in 512). Each floor is cleared with probability (tiles − 1) ÷ tiles and the floors are independent.

What is the house edge in Pagoda?

Target 1% at every cash-out point. The engine floors each multiplier to cents, so the actual return is exactly 99.00% on Hard and on Easy floors one and two, and between 98.67% and 98.99% on the other Easy and Medium rungs.

Which difficulty is the best value?

Hard, marginally: all nine of its rungs return exactly 99.00% because 0.99 × 2ᵏ is a whole number of cents. Easy and Medium lose up to a third of a cent per stake to flooring on some rungs. The difference is at most 0.33% of the stake; the difference in swing between the modes is far larger.

What does the Pagoda ladder pay?

Easy ×1.32, 1.76, 2.34, 3.12, 4.17, 5.56, 7.41, 9.88, 13.18. Medium ×1.48, 2.22, 3.34, 5.01, 7.51, 11.27, 16.91, 25.37, 38.05. Hard ×1.98, 3.96, 7.92, 15.84, 31.68, 63.36, 126.72, 253.44, 506.88.

Does it matter which tile I pick?

No. The trap on every floor is fixed by the seed pair and nonce before the round starts, and every tile is equally likely to be it, so any habit — always left, always the same column — has the same (tiles − 1) in tiles chance.

Is it better to cash out early or climb?

Neither in expectation: every rung costs about 1%. Cashing out early collects that 1% in small frequent losses with a swing near one stake per round; climbing collects it in rare large payouts with a swing of up to 22 stakes per round on Hard.

Can I verify a Pagoda round?

Yes. One HMAC-SHA256 per floor keyed by the revealed server seed over “clientSeed-nonce-floor”, first 8 bytes ÷ 2⁶⁴, times the tile count and floored, gives each trap; the verifier’s pagoda command reproduces the layout and the ladder.

SOURCES & REFERENCES
  • Betkyo engine source, house service: PagodaDerivation.kt — FLOORS, Difficulty tiles, trapAt() (per-floor cursor, floor(u × tiles)), mult100() (0.99 × (t ÷ (t − 1))ᵏ at scale 12 HALF_UP, floored to hundredths), ladder100(); OriginalPagodaService.kt — pick(), cashout(), TOP settlement and applyEarned() (stake × mult100 ÷ 100, FLOOR to two places)
  • Betkyo engine source, client mirror: PAGODA_FLOORS, PAGODA_TILES and pagodaMult100() in _shared/demoLocal.ts (BigInt mirror of the house arithmetic)
  • Exact calculations written for this article: ((t − 1) ÷ t)ᵏ clearance probabilities, the unfloored ladder 0.99 × (t ÷ (t − 1))ᵏ against the floored engine values, per-rung return and cents dropped, the mean floors cleared under an always-climb policy, and the per-round standard deviation for each cash-out point
  • Betkyo provably-fair verifier (GitHub, MIT): the pagoda command reproduces the trap layout and ladder 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