Question
Even only 52 cards, the permutationIndex
where I describe in Explanations section, would be a huge number; it is
One way to tackle this is to use (pseudo)random number generator (like a Mersenne Twister), then store only the seed number for each deal. Since you get the same sequence of random numbers each time from the same seed, it serves to represent the whole deal (using the random numbers generated from that seed to drive what cards are dealt).
[edit...]
Some pseudo-code for the deal:
while (#cards < cardsNeed)
card = getCard(random())
if (alreadyHaveThisCard(card))
continue
[do something with the card...]