GALABET FAIR / Your ticket. The drawn set.

Keno

Mark up to ten numbers from forty. Compare your ticket with the drawn set and see each matching number on the same sheet.

Interactive public-seed demonstration

GALABET / TICKET

5 picks · 3 hits
7 · 11 · 22

DRAWN SET / SORTED

7101117222628323336
A fox archivist stamps a ticket beside a violet draw drum.
Read the calculation ↓

Public inputs. Real calculations.
Each new example advances the nonce and runs @galabet/fair in your browser. Results are reproducible, and the seed is visible to everyone.

Inspect this Keno result · nonce 42

THIS EXAMPLE / NONCE 42

Keep the inputs.
Check the result.

This demonstration uses a public server seed. Its record checks the calculation; it does not establish when a live service published a commitment.

Client seed
galabet
Fractions consumed
39
Highest cursor
4
Server seed commitment
ab37723062965715c5e6eeb54816f909a8e787bd3bfaee67a3cc0a3b90707de7
Open full verifier ↗

Revealed inputs and complete JSON
{
  "spec": "GFS/1.0",
  "profile": "single-player",
  "game": "keno",
  "params": {
    "draws": 10
  },
  "serverSeed": "5c1f7d3e8a2b4c6d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
  "clientSeed": "galabet",
  "nonce": 42,
  "commitment": "ab37723062965715c5e6eeb54816f909a8e787bd3bfaee67a3cc0a3b90707de7",
  "cursor": 4,
  "result": [
    7,
    10,
    11,
    17,
    22,
    26,
    28,
    32,
    33,
    36
  ],
  "at": 0
}

READ THE TICKET, NOT JUST THE BALLS

Five picks.
Three matches.

Galabet uses reproducible shuffles for both this draw and Mines. Here, ten numbers become a public set to compare with your ticket. In Mines, the shuffled positions must stay concealed while the board is active. The shared foundation is the shuffle; what the player can see depends on the game.

REFERENCE PICKS7 · 11 · 22 · 30 · 40
IN BOTH SETS7 · 11 · 22
HIT COUNT03

Without replacement.

The mapper shuffles the numbers 1–40 and takes ten. A number cannot appear twice in that set. Reproducing the shuffle uses 39 fractions.

Sorted for comparison.

The result is returned in ascending order. The ball display shows that sorted set; it does not claim to preserve a physical extraction order.

Hits before payouts.

The ticket explains exactly which picks matched. A payout needs a separate table indexed by pick count and hits; this demonstration reports matches without settling chips.

SAME DRAW SIZE, DIFFERENT TICKETS

Three hits.
Out of how many picks?

A hit count needs the ticket size beside it. Three matches on a three-pick ticket and three on a ten-pick ticket have different probabilities and use different payout rows. Read both parts together.

Ten numbers drawn from forty, without replacement.

How often each hit count occurs, and what this demo table assigns to it
HitsProbabilityTotal return
0 of 521.6572%0.00×
1 of 541.6484%0.25×
2 of 527.7656%1.40×
3 of 57.9330%4.10×
4 of 50.9574%16.50×
5 of 50.0383%36.00×

Configured table return 98.9858%before whole-chip rounding

These are calculated probabilities. They describe repeated draws under the model; they do not predict the next ticket.

KEEP THE ORIGINAL TICKET

Picks, drawn numbers and matches answer different questions.

The submitted picks describe the ticket. The drawn set comes from the mapper. Their intersection supplies the hit count. Preserve all three, with the chosen table version, so a later support check does not depend on the player's current selection.

READ THE RETURN CAREFULLY

A multiplier below 1× can still return chips.

A 0.25× result on a 100-chip stake returns 25 chips: the net change is −75. Whole-chip rounding also matters on a small stake. A receipt should say what was returned and what changed in the balance.

REFERENCE EXAMPLE / NONCE 42

Match a ticket against the drawn set

JavaScript · set comparison
import { play } from '@galabet/fair';

// Public example inputs. Never publish an active server seed.
const seeds = {
  "serverSeed": "5c1f7d3e8a2b4c6d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
  "clientSeed": "galabet",
  "nonce": 42
};

const picks = [7, 11, 22, 30, 40];
const { result: drawn } = await play({
  game: 'keno', ...seeds, params: { draws: 10 }
});
const hits = picks.filter(number => drawn.includes(number));
console.log({ picks, hits, count: hits.length });
EXPECTED OUTPUT
picks  7, 11, 22, 30, 40
hits   7, 11, 22
count  3

The comparison explains the hits. Payouts come from the selected demo table and must be shown separately.