# On Shuffling Tarot Decks

### Computers are Lousy Dealers

Computers do not play with dice, but are deterministic machines. Given a particular input, to be crunched through a particular algorithm, a computer will always produce the same result: 1 + 1 always equals 2. However, anyone who ever played a computer game knows that the dreaded bog monster may sometimes sneak upon us from an unexpected direction. This is achieved through the use of pseudorandom number generators.

Pseudorandom number generators are deterministic algorithms that produce a sequence of numbers appearing to be random, at least to the naked human eye. In fact, such number sequences are not truly random. Rather, they are fully determined by a pre-selected value, known as a seed, which is passed to the pseudorandom number genrator algorithm.

How does this limitation of pseudorandom numbers affect online, computer generated, tarot readings? Online tarot readings are shuffled (or randomized) by way of pseudorandom number generators. In computer programming languages, the seed provided to the random number generator is typically limited to a number between 0 and 2^{32}-1=4,294,967,295 (a 32-bit integer). Each of these possible values, when used as the seed, will produce a unique number sequence. However, each seed value will always produce the same number sequence. In other words, a pseudorandom number generator, as typically implemented, can only produce a little over four billion different number sequences.

Since a computer can only shuffle a deck of cards using such a sequence of numbers, it can produce a little over four billion different tarot readings. Sound a lot? Actually, it's very little (and less than one unique tarot reading for every person in the world). A standard 78-card tarot deck, properly shuffled before each reading, can produce about 4,500,000,000,000,000,000 (four and a half quintrillion) unique 10-card Celtic Cross tarot spreads (to be exact, (78!)/(68!) = 4,566,176,969,818,464,000). In other words, a tarot site relying on pseudorandom numbers to shuffle its decks is limited to dealing less than 1% of potential 10-card combinations (Sisyphically doomed to deal the same tarot readings, over and over again).

### How is Tarotlore Different?

Tarotlore is the only site to use true random numbers to reliably shuffle its decks. These are obtained from random quantum physical processes, external to the computer, as provided by the Quantum Random Bit Generator Service. Thus, Tarotlore is the only site servicing the unadulterated richness of the tarot and capable of dealing every possible combination of tarot cards.

### A Caveat and Some Really Gritty Details for the Initiated

Pseudorandom numbers fall short of true randomness in another important way. While a sufficiently long sequence of random numbers will not reveal any sort of persistent internal pattern or order, the same is not true for pseudomrandom numbers. Such an underlying pattern can affect the quality of card shuffling performed with pseudorandom number generators. In other words, some card combinations will be more likely to occur than others. In contrast, with Tarotlore, as with a real tarot deck shuffled by hand, each tarot card combination is just as likely to occur as another.

A further problem pertains to the selection of seeds. For a pseudorandom number generator to perform at its best at approximating randomness, across iterations, it must be provided with seeds that are evenly dispersed over the total set of values available to them. Implementing this is no small mathematical feat. A typical seeding method uses values derived from the system date and time. Usually, such a method will not provide evenly dispersed seeds. Indeed, it may even be limited to generating seeds from only a small subset of the seeds available to the pseudorandom number generator. In such a case, the number of potential tarot readings is further constrained.

One caveat is due to the statement made above, regarding the limited number of tarot card combinations that can be produced by pseudorandom number generators. Theoretically speaking, it is possible to produce a wider variety of card combinations, even by way of a pseudorandom number generator. For instance, as a pseudorandom number generator can produce an infinitesimal sequence of numbers for each seed, it is possible to shuffle multiple decks by way of a single seed, using a different subset of the pseudorandom sequence for each deck. Such a solution is uncommon, as it requires significant and costly overhead of maintaining a stateful web application. Another method aimed at diversifying the potential results of a pseudorandom number generator is to mash together the sequences provided by several instances of a pseudorandom number generator, each instance seeded with a different value. However, both these solutions still provide sequences of numbers having an underlying pattern, whereby some tarot card combinations will occur more frequently than others.