
Ten numbers from your seeds draw ten of the 40 balls, with no ball drawn twice. You are paid on how many of your picks were drawn.
We choose our server seed before you bet and show its fingerprint. This commits us to that seed.
Your seeds draw ten different balls from 40. The matches with your picks determine the payout.
Rotate your seed to reveal ours. Use both seeds and the bet number to recheck any past result.
export function computeKenoDrawsFromFloats(floats: number[]): number[] {
const numbers = Array.from({ length: KENO_BOARD_SIZE }, (_, index) => index + 1);
let floatIndex = 0;
for (let index = KENO_BOARD_SIZE - 1; index >= KENO_BOARD_SIZE - KENO_DRAW_COUNT; index -= 1) {
const float = floats[floatIndex] ?? 0;
| Hits | 1 pick | 2 picks | 3 picks | 4 picks | 5 picks | 6 picks | 7 picks | 8 picks | 9 picks | 10 picks |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0× | 0× | 0× | 0× | 0× | 0× | 0× | 0× | 0× | 0× |
| 1 | 3.96× | 1.9× | 1× | 0.8× | 0.25× | 0× | 0× | 0× | 0× | 0× |
| 2 | — | 4.5× | 3.1× | 1.8× | 1.4× | 1× | 0.47× | 0× | 0× | 0× |
| 3 | — | — | 10.4× | 5× | 4.1× | 3.68× | 3× | 2.2× | 1.55× | 1.4× |
| 4 | — | — | — | 22.5× | 16.5× | 7× | 4.5× | 4× | 3× | 2.25× |
| 5 | — | — | — | — | 36× | 16.5× | 14× | 13× | 8× | 4.5× |
| 6 | — | — | — | — | — | 40× | 31× | 22× | 15× | 8× |
| 7 | — | — | — | — | — | — | 60× | 55× | 44× | 17× |
| 8 | — | — | — | — | — | — | — | 70× | 60× | 50× |
| 9 | — | — | — | — | — | — | — | — | 85× | 80× |
| 10 | — | — | — | — | — | — | — | — | — | 100× |
Theoretical RTP: 98.65–99.07%.
With p picks, the chance that exactly h of them are among the 10 drawn is:
P(h) = C(p, h) × C(40 − p, 10 − h) / C(40, 10)Return is the sum over hits of chance times what that many hits pays.
RTP = Σ P(h) × pays(h)Reproduce these results with the inputs below.