Statistical fairness

Shuffle uniformity audit

The deal is generated by a SHA-256 stream, the same one the deal verifier reproduces. This audit plays a million deals and checks, with standard statistical tests, that every card is equally likely to land in every position: the shuffle favors no rank, suit, or seat.

✓ Verdict: over 1,000,000 deals, the shuffle is statistically uniform. No test shows bias.
Test (categories)χ²dfp-valueResult
Starter card (52)65.09510.089uniform
Your first card (52)59.12510.203uniform
Opponent's first card (52)58.68510.215uniform
Starter rank (13)23.08120.027uniform

A fair shuffle produces χ² near the degrees of freedom and p-values spread across (0,1); values here are unremarkable, exactly as expected from a uniform process. (A rigged shuffle would show a tiny p-value, under 0.001 say, on the biased quantity.) N = 1,000,000; seeds derived as the game derives per-hand seeds.

Run the audit yourself, right here

No tools, no downloads, no setup. Click the button and your own browser shuffles fifty thousand fresh deals using the exact same SHA-256 shuffle the game uses, then runs the same chi-square tests you see above. It all happens on your device; nothing is sent anywhere.

Prefer to run it from source? (for developers)

The identical audit ships as a small, dependency-free Python script in the game's source. From the project folder:

python3 tools/shuffle_uniformity.py 1000000

Runs a full million deals in seconds. The chi-square p-value is computed in pure Python (regularized incomplete gamma), with nothing hidden behind a library. The in-browser version above uses the same deal algorithm and the same test.

This is one of three independent fairness guarantees: (1) per-deal reproducibility from a pre-committed seed (the offline verifier), (2) this statistical uniformity audit, and (3) the AI's structural inability to see your hidden cards (an automated no-peek test in the game's test suite, explained in the AI deep dive). Together: fair cards, an unbiased shuffle, and an AI that can't see your hand.