How NFA Spades deals

Before each hand the server draws a 128-bit secret seed with crypto.randomBytes and shows every player its SHA-256 fingerprint. The deck is then shuffled by Fisher–Yates, taking its random numbers from SHA-256 of seed:0, seed:1, … with no modulo bias, and dealt one card at a time starting left of the dealer.

When the hand ends the seed is revealed. The app checks it against the fingerprint and reshuffles to confirm it produces exactly the hands that were dealt. Because the fingerprint was fixed first, nobody, the server included, can change the cards to favour anyone. There is nothing to buy, so there is nothing to favour.

Below: every online deal so far, 45 hands (180 hands of 13 cards), against what a fair deck produces. dealt expected

Spades per hand

00.6%110.0%223.9%323.3%420.6%515.0%66.7%70.0%8+0.0%

p = 0.35 (anything above 0.001 is what a fair shuffle produces; a small p now and then is expected)

Aces per hand

032.2%141.7%220.6%35.0%4+0.6%

p = 0.80 (anything above 0.001 is what a fair shuffle produces; a small p now and then is expected)

Does any seat do better?

Average spades by seat (a fair deal gives 3.25 everywhere), and who gets the ace of spades.

SeatSpades per hand
Left of dealer3.20
Across from dealer3.56
Right of dealer2.80
Dealer3.44

p = 0.20 (anything above 0.001 is what a fair shuffle produces; a small p now and then is expected)

SeatAce of spades
Left of dealer33.3%
Across from dealer15.6%
Right of dealer24.4%
Dealer26.7%

p = 0.41 (anything above 0.001 is what a fair shuffle produces; a small p now and then is expected)

Raw numbers and tests: /api/fairness. In the app, Stats → Your luck compares the cards you personally were dealt with a fair deck.