wag.dk

FIELD NOTES
ENTRY No. 002
Data & Code / Simulations — 2026-08-16

The Best Way to Shuffle Cards (According to 10,000 Simulated Trials)

Testing nine shuffle methods against a standard deck and a 60-card Skip-Bo deck

A new deck of cards comes ace-to-king, every suit in order — about as far from random as a deck can get. The classic result here is the Bayer-Diaconis riffle shuffle theorem: seven riffle shuffles is the mathematical threshold where a deck goes from fully ordered to statistically indistinguishable from random. Fewer than seven and detectable order remains; more than seven barely helps.

That raised an obvious question: does how you riffle matter, beyond just the count? I built nine shuffle variants in Python and ran each one 10,000 times against two decks — a standard 52-card deck, and a 60-card Skip-Bo deck (values 1-12, five copies each, since repeated values stress-test the randomness metric differently). Randomness was measured using rising sequences — counting runs of cards still in ascending original order, the same metric the original proof is built on. A fresh deck has 1 rising sequence; a truly random deck averages (n+1)/2.

The methods

Standard Riffle — the baseline. Deck split roughly in half (imperfect cut, not exactly 26/26), then interleaved with a randomized number of alternations (10–20) and variable-sized clumps from each side. This mirrors the actual Gilbert-Shannon-Reeds model behind the Bayer-Diaconis proof.

Heart Cut Shuffle — pull the middle ~half of the deck out as one packet (a real cardistry move called a "heart cut"), join the leftover top+bottom into the other packet, then riffle the two together.

Center Load Shuffle — pull the middle ~third out and place it on top of the remaining two-thirds, then do a standard riffle on the restacked deck.

Carousel Shuffle — a multi-round rotating scheme: round 1 pulls a third aside and riffles the rest; each following round splits the current shuffled pile in half, sets one half aside (replacing the previous aside pile), and riffles the other half together with that previous aside pile.

Tilt Shuffle — a deliberately uneven split (roughly 2/3 vs 1/3, which side is bigger randomized) instead of a near-half cut, then a standard riffle.

Undercut Shuffle — cut roughly a third off the bottom and move it to the top before each riffle.

Strip Shuffle — no interleaving at all. The deck is broken into 4–8 packets pulled off the top one at a time, each dropped on top of the last — which reverses packet order but leaves the cards within each packet untouched. Included as a baseline for "what happens if you never interleave."

Strip + Riffle Combo — one riffle followed by one strip shuffle, repeated per round. Note this means each "round" is actually two physical shuffles, not one.

Center Load + Strip Combo — same idea, but a Center Load Shuffle followed by a strip shuffle each round.

Results — Standard deck

Method12345678910
Center Load Shuffle28.2%45.9%59.2%68.9%76.1%82.0%86.2%89.5%92.0%94.0%
Carousel Shuffle24.7%39.5%51.4%61.1%68.8%74.9%80.0%83.9%86.9%89.7%
Undercut Shuffle26.1%41.4%53.6%63.5%71.0%77.2%82.0%85.8%88.9%91.1%
Heart Cut Shuffle25.2%41.8%54.8%64.7%72.6%78.8%83.5%87.2%90.0%92.2%
Tilt Shuffle23.6%39.3%51.7%61.6%69.6%75.7%80.6%84.5%87.7%90.3%
Standard Riffle24.1%40.1%52.9%62.9%70.7%76.9%81.8%85.5%88.5%91.0%
Strip Shuffle21.5%24.4%34.6%38.4%45.9%49.4%55.3%58.7%63.1%65.8%
Strip + Riffle Combo35.5%53.0%67.0%76.3%83.2%88.0%91.4%93.8%95.5%96.9%
Center Load + Strip Combo38.1%56.7%70.4%79.8%86.1%90.5%93.4%95.5%96.9%98.0%

Results — Skip-Bo deck

Method12345678910
Strip Shuffle18.3%20.6%29.4%32.8%39.4%42.6%47.7%50.7%54.7%57.5%
Strip + Riffle Combo31.0%47.1%59.9%68.7%75.2%79.9%83.5%86.1%88.0%89.5%
Center Load + Strip Combo33.3%50.3%63.0%71.8%78.1%82.6%85.8%87.9%89.4%90.7%
Heart Cut Shuffle22.6%37.4%49.2%58.2%65.5%71.2%75.6%79.2%82.2%84.4%
Undercut Shuffle23.1%37.3%48.8%57.7%65.0%70.8%75.2%79.0%81.8%84.0%
Carousel Shuffle22.1%35.7%47.0%56.1%63.2%69.1%73.8%77.7%80.7%83.2%
Standard Riffle21.6%36.2%48.1%57.3%64.7%70.3%75.0%78.6%81.5%84.0%
Center Load Shuffle25.0%41.1%53.0%62.1%68.9%74.5%78.6%81.9%84.6%86.5%
Tilt Shuffle21.1%35.5%47.0%56.2%63.6%69.3%74.0%77.8%80.9%83.3%

What it means

All the single-action riffle-based methods (Standard, Tilt, Undercut, Heart Cut, Carousel, Center Load) cluster within a few percentage points of each other on both decks — confirming that how you cut the deck before riffling barely matters. What actually drives randomness is the messiness of the interleave itself: irregular clump sizes falling from each hand, not which packet ends up where.

Center Load Shuffle is the best-performing single-action method on its own, consistently a few points ahead. But the real standout is the combo methods: Strip + Riffle Combo and Center Load + Strip Combo both clearly outperform every single-action method — unsurprising, since each "round" there is actually two physical shuffles, not one. Center Load + Strip Combo reaches 98% of fully random on a standard deck by round 10, and is the best performer on the Skip-Bo deck too.

Strip Shuffle alone is the clear loser on both decks — it never interleaves cards, so it plateaus far below the others. It's only useful as a supplement between riffles, not a replacement.

Reproducing this

All nine shuffle scripts are attached below, plus CompareShuffleResults.py, which scans a folder for the resulting *_shuffle_results.json files, prints the comparison tables above, and generates the chart shown at the top of this post. Each script is self-contained — run it, then run the comparison script in the same folder.