Sampling such chance events is an interesting exercise. An incorrect naïve approach
would uniformly sample all possible events, treating the generation of 2 and 4 tiles as
equiprobable. If one randomly generates samples so as to allow duplicates, it slows the
process of gaining unique samples in proper proportion. A correct efficient approach
would be to create two copies of a list of empty cells. One copy represents unchosen 2
tile generations and the other copy represents unchosen 4 tiles generations. The relative
probability of sampling an unchosen 2 tile is .9 times the number of unchosen samples
divided by the sum of same product plus .1 times the number of unchosen 4 tile samples.
Using this insight, we choose the list/tile to sample with correct probability, and then
select a random unchosen cell from the list in a manner similar to the Fisher-Yates shuffle
algorithm, building an unbiased sample efficiently.