Why Traditional Shuffling Falls Short
Human Shuffling is Biased
In 1992, mathematicians Dave Bayer and Persi Diaconis proved something surprising. A normal 52-card deck needs exactly 7 riffle shuffles, the kind where you split the deck and let the halves fall together, to become truly mixed.[1] Most people shuffle only 3 or 4 times. A 78-card tarot deck needs even more. So the deck stays a little biased. Cards that sat next to each other before the shuffle often stay close together. Your grip, the worn edges of the cards, and your usual way of shuffling all leave patterns that carry from one reading to the next. The shuffle feels random, but the math says it is not.
Algorithmic Randomness is Predictable
Most online tarot tools use pseudo-random number generators, or PRNGs. These are programs that fake randomness using math. JavaScript's Math.random() is the most common. It makes numbers that look random but are fully set by one starting number, called a seed. Give it the same seed, and it makes the same sequence every time. Better tools like crypto.getRandomValues() gather randomness from real hardware activity, such as mouse moves and disk timing. That is much better, but it is still classical, meaning it follows everyday physics. The difference matters. Classical randomness is "unpredictable because we lack information." Quantum randomness is "unpredictable because being unpredictable is part of the process itself." Those are two very different claims.
Quantum Randomness: Irreducible by Nature
What Are Quantum Vacuum Fluctuations?
Even fully empty space, a perfect vacuum with no particles, no light, and no matter, is not truly empty. Quantum physics tells us the vacuum buzzes with virtual particles. These are tiny bits of energy that pop into being and vanish almost at once, borrowing energy and giving it right back. This buzzing is not a gap in what we know or a flaw in our tools. It is a basic feature of space and time itself, set by the Heisenberg uncertainty principle, a core rule of quantum physics.[2] The randomness it makes cannot be broken down any further. There is no hidden cause, no deeper pattern, and no computer that can predict the next flicker. This is the source we use to draw your tarot cards.
The ANU Quantum Random Number Generator
The ANU Quantum Random Number Generator (QRNG) is a research-grade machine at the Australian National University's Department of Quantum Science. It splits a laser beam and reads it with a homodyne detector. That is a sensor that picks up the faint quantum noise found in empty space. The machine reads this noise very fast to make a steady stream of true random numbers.[3] The ANU QRNG is not a gimmick. It is the same kind of quantum source used in quantum cryptography studies, printed in reviewed science journals, and trusted by researchers. When you draw a tarot card on Naksham, you tap into that same deep physics.
The Mathematics of a Fair Shuffle
Fisher-Yates Algorithm
The Fisher-Yates shuffle, also known as the Knuth shuffle, is the standard method for mixing a deck so every order is equally likely. It walks backward through the deck. For each position i from 77 down to 1, it picks a random spot j between 0 and i, including both ends, then swaps the cards at i and j. It does this in one pass through the cards, called O(n) time because the work grows in step with the deck size. The result is an order where every possible arrangement of the 78 cards is exactly equally likely. No other method does this with fewer steps.
Rejection Sampling
When the Fisher-Yates method needs a random number between 0 and n-1, the simple way, randomByte % n, brings in modulo bias. If 256 does not split evenly by n, some leftover values, called remainders, come up more often than others. For a 78-card deck, that means some cards would show up a bit more often than they should. Rejection sampling removes this fully. We find the largest multiple of n that fits within 232. If a random value lands above that line, we throw it out and draw again. The result is a perfectly even spread with no bias. Every card spot has the exact same chance.[4]
Exceeding the Bayer-Diaconis Standard
The Bayer-Diaconis theorem (1992) proved that a 52-card deck needs 7 riffle shuffles before it looks truly random.[1] A 78-card tarot deck needs even more. Our quantum Fisher-Yates shuffle beats this standard in a single pass. Not by shuffling more, but because the randomness source is fair from the very start. Hand shuffling only creeps closer to random the more you repeat it. Quantum shuffling begins at perfect randomness.
| Method | Source | Bias | Deterministic? |
|---|
| Hand shuffle (3-4 riffles) | Physical | Yes, grip, wear, technique | No, but biased |
Math.random() | PRNG seed | Modulo bias possible | Yes, given seed |
crypto.getRandomValues() | Hardware entropy | Minimal | No, but classical |
| Quantum Tarot | ANU QRNG vacuum fluctuations | None, rejection sampling | No, by nature |
Every Draw is Verifiable
Source Tracking
Every reading saves its randomness source, either quantum or the crypto backup. We track this carefully. If even one step in the draw uses the hardware backup, the whole reading is marked as crypto backup. We never mix the labels. This is on purpose. We would rather claim less than claim too much. Being open is not an add-on here. It is how the whole system is built.
Millisecond-Precision Timestamp
The exact moment you click "draw" is saved as a timestamp, accurate to the millisecond, and shown in Indian Standard Time (IST). This is not the time the server replied. It is the moment you asked, recorded the instant your draw request goes out. The timestamp sits on the Quantum Badge so you can check exactly when your cards were drawn.
The Quantum Badge
Every reading shows a proof certificate, the Quantum Badge. Here is exactly what it looks like:
Drawn: 28 Mar 2026, 14:32:47.283 IST
Drawn from quantum randomness, the universe's own dice.
This is exactly what you see on every reading. It is proof of the quantum source and the exact moment your cards were drawn.
Graceful Fallback
If the ANU QRNG cannot be reached, due to a slow network, server maintenance, or any other glitch, the system smoothly switches to crypto.getRandomValues(). This backup gathers randomness from real hardware activity in your computer. The Quantum Badge shows clearly which source was used. The crypto backup is still far better than any hand shuffle. It gives hardware-based randomness that is almost impossible to predict, just not quantum-deep.
Experience It Yourself
Now that you know how it works, try a quantum-drawn reading. Every card, every upright or reversed position, every draw comes from quantum vacuum fluctuations.