How can I create a subset of the 'most dissimilar' arrays from a set of possible combinations?
Your algorithm could look like this:

Keep the last X (say 10) of the combinations that have been used in a list of some sort.
Pick Y (say 10) combinations randomly.
Analyze each of the Y combinations against the last X combinations to find the most dissimilar combination.  This would involve writing a method that would generate a score as to how dissimilar the combination is with each of the last X combinations.  Average the score and pick the one that is most dissimilar.
Say I have an array of shape (32,).
Each element can have one of four int values:0 to 3
If I wanted to create an array for each possible combination I would have 432 ( approximately 1.84 x 1019) arrays - this is overly burdensome.
Is there a straightforward way to pick fewer arrays, say 1 x 106, by picking the 'most dissimilar' combinations?
By 'most dissimilar' I mean avoiding arrays that are different by one (or few) values and picking arrays that have many dissimilar values. 
Also, if there is an area of mathematics that I should be looking at to improve my description please let me know.