Our dice, under the hood

A dice game is only as honest as its dice. Here is exactly how ours work — no hand-waving.

Cryptographic, server-side, per die

Every die on PointPuck is generated on our server by the operating system's cryptographically secure random number generator (the same class of generator that protects TLS keys and password tokens). The browser never rolls anything: your device sends "roll", and the server answers with dice it generated itself. Nothing about the outcome exists on your machine to be inspected or tampered with.

Why "random bytes" aren't enough — and what we do about it

A random byte is a number from 0 to 255 — and 256 doesn't divide evenly by six. If you naively take byte % 6, the faces 1 through 4 come up very slightly more often than 5 and 6 (43 chances in 256 versus 42). Casually small — roughly one extra hit per 256 rolls — but it is exactly the kind of bias a serious dice site must not have.

Our fix is rejection sampling: we draw a random byte, and if it's 252 or higher we throw it away and draw again. That leaves 252 equally likely values — 42 for each face — so every face of every die is exactly as likely as every other: 1 in 6, provably.

Tested like money depends on it

Every build runs the dice through distribution tests and the full payout engine through two-million-decision simulations per bet type, checking measured results against the published house-edge mathematics. A build that drifts from the reference numbers fails and never ships.

Settled in the open

Every roll, bet, and payout is written to an audit ledger as it happens — every dollar of your play-money bankroll can be traced roll by roll in your history and stats screens. The server settles bets from the same tables of rules published for Las Vegas strip craps: no roll knows what you have wagered, and no wager changes what is rolled.

The live audit

This is not a promise — it is the scoreboard. Every roll PointPuck has ever produced, counted and tested against the mathematics of two fair dice, straight from our database.

Reading the dice…

What the house has taken

The number a real casino never posts on the wall. Every dollar ever wagered on PointPuck, every dollar paid back, and what the house kept — play money, real math.

Counting the rack…

This is the hold: house winnings divided by handle (what actually rode on the dice — chips a player pulled back down before a decision were never at risk, so they are not counted). In a real casino craps holds roughly 10–15% of the money that crosses the table, even though the individual bets carry edges from 0% to 16%, because players keep re-betting the same money until it is gone. Our table is free and the chips are fake, so the only thing this counter costs you is the illusion that the house needs to cheat to win.

How to read it

The gold bars are what our dice actually did; the dashed lines are what perfectly fair dice should do. They will never match exactly — randomness is lumpy, and a table where every bar landed precisely on its line would be evidence of something fake.

So we use the standard test statisticians use: chi-square. It rolls every deviation into a single number. For the eleven totals the expected value is about 10, and anything under 18.31 is a pass; for the six die faces the expected value is 5, and the pass mark is 11.07. Those thresholds are the 5% significance level: even perfectly fair dice trip them roughly one run in twenty, which is exactly why we publish the number instead of a green tick. The p-value answers the plain-language question: how often would honest dice look at least this uneven? A high number means "all the time — this is ordinary randomness."

The per-face test is the important one. Totals can look fine while a generator quietly favours particular die faces — that is precisely what the modulo bias described above does. If our rejection sampling ever broke, this is the number that would catch it.

An honest note on "provably fair"

Today, "provable" means uniform generation + open rules + a complete audit trail on a free, play-money game. A cryptographic commit-and-reveal scheme (where we commit to rolls before you bet, so you can verify them afterwards) is on our roadmap for multiplayer — we'd rather tell you exactly what the system does than stretch a marketing word.

Roll them yourself