THE CARDS, UNDER THE MICROSCOPE

Randomness Investigation

How often do sets, flopped flushes and straights, board textures and draw completions actually occur? We removed table animations and dealt ten million virtual decks through JinRuoYu’s live shuffle function. We compared player and community-card outcomes with exact mathematical odds.

10,000,000 complete shuffled decks10,000,000 independent player hands for draw tests16 September 2026 simulation date

WHAT WE FOUND

None of the predefined card-position or draw comparisons crossed the adjusted 5% significance threshold in this sample. That is consistent with the calculated probabilities, but it is not proof of perfect randomness.

This is a simulation of the application’s shuffle code in Node’s Web Crypto runtime. Live games use the same shuffle code on Cloudflare’s Web Crypto runtime. We did not sample live users’ hidden cards or independently audit Cloudflare’s entropy source.

QUESTION 01

Which cards did we investigate?

All 52 positions in every deck: the nine players’ first and second hole cards, burn cards, flop, turn and river, plus unused cards. We tested whether each of the 52 specific cards appears in each position about 1/52 of the time. For draw outcomes, we selected one player per deck, rotating across the nine seats. Counting nine correlated players as nine independent trials would have made the statistical tests misleading.

0invalid or duplicate-card decks
0 / 52card positions flagged after multiple-test correction
191,256consecutive decks with the same first card; 192,308 expected

Private-card composition also matched its combinatorial reference: pairs 589,139 vs 588,235 expected; suited unpaired 2,355,376 vs 2,352,941; off-suit unpaired 7,055,485 vs 7,058,824. Pearson χ²(2) = 5.49, p = 0.0643.

EARLIER PILOT

What happened in the first million decks?

Before this larger study, we ran a one-million-deck pilot. Its third card position was the only one of 52 to cross the adjusted threshold: χ²(51) = 88.60, unadjusted p = 0.0009, Holm-adjusted p = 0.0448. At a family-wide 5% threshold, a chance false alarm remains possible even with a fair shuffle. We have kept that original result available.

After seeing the pilot result, we ran a separate, independent sample of 1,000,000 decks, checking only position 3. It produced χ²(51) = 52.32, p = 0.4225. The independent pilot follow-up did not flag position 3. This is consistent with a chance false alarm in the pilot screen, although it cannot rule out a smaller bias. The earlier ten-million-deck run and this expanded ten-million-deck run are independent. We preserved all earlier results and did not replace or hide the pilot or follow-up.

QUESTION 02

How often do made hands and draws arrive?

These rows cover five-card hands on the flop, pocket-pair outcomes, suited starting cards, the flop board itself, and seven-card or draw outcomes. Each deck contributes one rotating player hand to player-level comparisons; board-texture rows use the same deck’s community cards. Conditional rows count only deals that qualify for that situation, so their sample sizes differ. Rows can overlap; for example a straight flush belongs to both “flopped straight” and “flopped flush.” Bets and folds do not affect these counts.

MeasureQualifying dealsObservedExpectedDifferenceAdjusted p
Made hands on the flop (your two cards + three community cards)
Exactly one pairFive-card hand has one pair, excluding two pair or better.10,000,00042.261%4,226,136 hands42.257%4,225,690 hands+0.004 pp95% interval for difference: -0.026 pp to +0.035 pp1.0000
Exactly two pairFive-card hand has two distinct pairs.10,000,0004.760%476,005 hands4.754%475,390 hands+0.006 pp95% interval for difference: -0.007 pp to +0.019 pp1.0000
Exactly three of a kindFive-card hand has trips, excluding full houses and quads.10,000,0002.109%210,871 hands2.113%211,285 hands-0.004 pp95% interval for difference: -0.013 pp to +0.005 pp1.0000
Flopped straightFive cards contain a straight; includes the rare straight flush.10,000,0000.397%39,688 hands0.394%39,400 hands+0.003 pp95% interval for difference: -0.001 pp to +0.007 pp1.0000
Flopped flushAll five cards share a suit; includes the rare straight flush.10,000,0000.196%19,632 hands0.198%19,808 hands-0.002 pp95% interval for difference: -0.005 pp to +0.001 pp1.0000
Flopped full houseThree cards of one rank and two of another.10,000,0000.144%14,394 hands0.144%14,406 hands-0.000 pp95% interval for difference: -0.002 pp to +0.002 pp1.0000
Flopped four of a kindFour cards of one rank among the five.10,000,0000.025%2,459 hands0.024%2,401 hands+0.001 pp95% interval for difference: -0.000 pp to +0.002 pp1.0000
Flopped straight flushFive suited cards in sequence, including royal flushes.10,000,0000.002%164 hands0.002%154 hands+0.000 pp95% interval for difference: -0.000 pp to +0.000 pp1.0000
Pocket-pair outcomes
Flop a third card of your pocket pairExactly one of the two remaining matching cards arrives on the flop; the best hand may be a full house if the other flop cards pair.589,13911.480%67,636 hands11.510%67,811 hands-0.030 pp95% interval for difference: -0.111 pp to +0.052 pp1.0000
Flop a clean set (exact trips)Exactly one matching card arrives, and the other two flop cards have different ranks.589,13910.733%63,234 hands10.776%63,483 hands-0.042 pp95% interval for difference: -0.121 pp to +0.037 pp1.0000
Flop quads with a pocket pairBoth remaining cards of the pocket-pair rank arrive on the flop.589,1390.246%1,452 hands0.245%1,443 hands+0.002 pp95% interval for difference: -0.011 pp to +0.014 pp1.0000
Turn a third pocket-pair card after a blank flopGiven a pocket pair and no matching flop card, one of two outs arrives on the turn.520,0514.262%22,166 hands4.255%22,130 hands+0.007 pp95% interval for difference: -0.048 pp to +0.062 pp1.0000
River a third pocket-pair card after two blanksGiven a pocket pair and no matching flop or turn card, one of two outs arrives on the river.497,8854.314%21,479 hands4.348%21,647 hands-0.034 pp95% interval for difference: -0.090 pp to +0.023 pp1.0000
Hit a third pocket-pair card by river after a blank flopTurn or river brings at least one matching card after none came on the flop.520,0518.392%43,645 hands8.418%43,779 hands-0.026 pp95% interval for difference: -0.101 pp to +0.050 pp1.0000
Hit a third pocket-pair card by riverAt least one of the five community cards matches the starting pair.589,13919.135%112,733 hands19.184%113,019 hands-0.048 pp95% interval for difference: -0.149 pp to +0.052 pp1.0000
Make quads by river after flopping a third cardGiven exactly one matching flop card, the last card of that rank arrives on turn or river.67,6364.335%2,932 hands4.255%2,878 hands+0.080 pp95% interval for difference: -0.072 pp to +0.232 pp1.0000
Suited starting cards
Flop a flush with suited hole cardsAll three flop cards match the suit of the two hole cards.2,355,3760.833%19,632 hands0.842%19,828 hands-0.008 pp95% interval for difference: -0.020 pp to +0.003 pp1.0000
Flop a four-flush with suited hole cardsExactly two of the three flop cards match the hole-card suit.2,355,37610.955%258,043 hands10.944%257,769 hands+0.012 pp95% interval for difference: -0.028 pp to +0.051 pp1.0000
Flop a backdoor flush draw with suited hole cardsExactly one flop card matches the hole-card suit.2,355,37641.608%980,017 hands41.587%979,524 hands+0.021 pp95% interval for difference: -0.042 pp to +0.084 pp1.0000
Complete that backdoor flush by riverGiven exactly one matching flop card, both turn and river match the hole-card suit.980,0174.178%40,945 hands4.163%40,796 hands+0.015 pp95% interval for difference: -0.024 pp to +0.055 pp1.0000
Complete your hole-card suit by riverAt least three of the five community cards match the starting suit.2,355,3766.403%150,806 hands6.400%150,740 hands+0.003 pp95% interval for difference: -0.028 pp to +0.034 pp1.0000
Community-card flop texture
Monotone flopAll three community cards have the same suit.10,000,0005.165%516,513 hands5.176%517,647 hands-0.011 pp95% interval for difference: -0.025 pp to +0.002 pp1.0000
Rainbow flopThe three community cards have three different suits.10,000,00039.787%3,978,725 hands39.765%3,976,471 hands+0.023 pp95% interval for difference: -0.008 pp to +0.053 pp1.0000
Paired or tripled flopAt least two community cards have the same rank.10,000,00017.182%1,718,179 hands17.176%1,717,647 hands+0.005 pp95% interval for difference: -0.018 pp to +0.029 pp1.0000
Three-of-a-kind flopAll three community cards have the same rank.10,000,0000.235%23,478 hands0.235%23,529 hands-0.001 pp95% interval for difference: -0.004 pp to +0.002 pp1.0000
Seven-card outcomes and draw completion
Flush available in seven cardsAny five cards of one suit, whether or not a stronger hand is also available.10,000,0003.058%305,751 hands3.057%305,658 hands+0.001 pp95% interval for difference: -0.010 pp to +0.012 pp1.0000
Straight available in seven cardsAny sequence of five ranks, including A–2–3–4–5. Stronger hands may overlap.10,000,0004.823%482,331 hands4.824%482,438 hands-0.001 pp95% interval for difference: -0.014 pp to +0.012 pp1.0000
Flop flush draw → flush by riverExactly four of a suit among the two hole cards and the flop.429,41335.073%150,610 hands34.968%150,156 hands+0.106 pp95% interval for difference: -0.037 pp to +0.248 pp1.0000
Flop straight draw → straight by riverAt least one rank can make a straight on the next card; river result also includes runner-runner paths.1,326,42720.894%277,142 hands20.878%276,937 hands+0.015 pp95% interval for difference: -0.053 pp to +0.084 pp1.0000
Flop straight draw → straight on turnAt least one rank completes a straight immediately on the next card.1,326,42710.674%141,578 hands10.647%141,223 hands+0.027 pp95% interval for difference: -0.025 pp to +0.079 pp1.0000
Flop four-out straight drawOne completing rank; typically an inside draw.993,48217.340%172,265 hands17.335%172,218 hands+0.005 pp95% interval for difference: -0.070 pp to +0.079 pp1.0000
Flop eight-or-more-out straight drawAt least two completing ranks; includes open-ended and double-gutshot draws.332,94531.500%104,877 hands31.452%104,719 hands+0.047 pp95% interval for difference: -0.110 pp to +0.205 pp1.0000
Flop combo draw → flush or straightBoth flush and straight draws on the flop; overlapping outs count once.71,21647.958%34,154 hands47.661%33,943 hands+0.297 pp95% interval for difference: -0.069 pp to +0.663 pp1.0000
Turn flush draw → flush on riverFour of a suit among the player’s six known cards.1,040,77119.584%203,825 hands19.565%203,629 hands+0.019 pp95% interval for difference: -0.057 pp to +0.095 pp1.0000
Turn straight draw → straight on riverAt least one rank completes a straight on the river.2,692,87311.180%301,065 hands11.206%301,751 hands-0.025 pp95% interval for difference: -0.063 pp to +0.012 pp1.0000
Turn combo draw → either on riverBoth draws present on the turn; overlapping outs count once.317,14928.055%88,977 hands28.008%88,828 hands+0.047 pp95% interval for difference: -0.109 pp to +0.203 pp1.0000

The expected rates come from exact card combinations or exact conditional runouts. A 95% interval spanning zero is compatible with no difference. Adjusted p values use Holm’s correction across all 36 reported comparisons. These expanded comparisons were selected after the first ten-million-deck report, so this is a new independent run. A small p value flags a discrepancy for investigation; a large one does not prove fairness.

HOW WE COUNTED

Why these are the right odds

Flush draw

With four cards of a suit on the flop, nine of the 47 unseen cards complete the flush. The chance by the river is 1 − C(38, 2) / C(47, 2) = 34.968%. On the turn it is 9 / 46 = 19.565%.

Straight draw

One-card completing ranks are identified from the actual player cards and board, including ace-low straights. For each flop we calculate the exact chance over all C(47, 2) = 1,081 possible turn/river rank pairs. That includes runner-runner paths. On the turn, completing cards are counted out of 46.

Combo draw

When both draws exist, we count a completed flush or straight once, even if a card serves both. On the flop we enumerate all 1,081 possible two-card runouts; on the turn we count the union of distinct outs among the 46 unseen cards.

All seven cards

Exact reference rates come from combinatorics: flushes from suit counts and straights from rank-multiplicity enumeration across all 133,784,560 seven-card combinations. These rows include straights or flushes that coexist with stronger hands.

Flopped hands

Five-card outcomes use all C(52, 5) = 2,598,960 possible player-plus-flop combinations. There are 5,148 flushes and 10,240 straights, with 40 straight flushes in both totals. These are exact probabilities, not outside estimates.

Pocket pairs and board texture

Given a pocket pair, the flop is chosen from C(50, 3) = 19,600 possibilities. Exactly one of the two remaining rank-mates appears in 2,256 cases; 2,112 of these are clean sets (the two other flop ranks differ), and 48 cases flop quads. A later rank-mate can also make a full house on a paired board, so those rows explicitly count the matching card rather than claiming the best hand is always trips. Board-only texture uses C(52, 3) = 22,100 flop combinations.

REPRODUCE IT

Methods, files and limitations

  1. Use the study program, parallel runner, and worker script with the app’s shuffle module in this project. Run node scripts/randomness-parallel.mjs --hands 10000000 --workers 10 --out study/randomness-results.json with Node 24 or later. Each run will have different random data.
  2. Inspect the ten-million-deck aggregate results (JSON), including all 52 position tests and unrounded counts. The previous ten-million-deck run, earlier pilot, pilot follow-up, and follow-up program are also available. All runs used shuffle-module SHA-256 9e82d0a3232d1c3efbf38156a9a030955b9e3de0ad1f808e5f278b82237627f6.
  3. Tests use two-sided conditional z comparisons for draw frequencies and Pearson χ² for each card position. Holm adjustment controls the family-wise 5% threshold separately for the 36 hand/board/draw endpoints and 52 card-position tests in each full study. The pilot follow-up tests only its originally flagged position, at 5%. We report raw observed rates, exact conditional expectations and 95% intervals for their difference.

The simulated decks were not produced by live games, and no player data is in the study. We retained aggregate counts, not all raw deck sequences. This checks the implementation’s statistical behavior; it cannot establish that an operator could never change code or influence an individual live deal. A separate commitment and verification mechanism would be needed for players to audit a particular hand. As NIST cautions, statistical testing cannot certify a random-number generator or replace cryptographic analysis. The app obtains its shuffle randomness with Web Crypto’s getRandomValues and uses rejection sampling in Fisher–Yates to avoid modulo bias.

Expanded ten-million-deck study 2026-09-16T14:02:46.228Z · Earlier ten-million-deck run 2026-09-16T13:45:16.008Z · Pilot 2026-09-16T13:13:53.517Z · Pilot follow-up 2026-09-16T13:17:38.427Z · Node v24.19.0 · No live player information.