Generate all the 5 x 100 samples. Sort by column. transpose. unique() with the 'rows' option, using the multiple-output version of unique(). Use the returned indices to extract the rows of the sorted-transpose that were unique, and the same indices to extract the columns of the original matrix that were unique, saving that partial result.
Now, figure out how many more columns you need, generate that many more, sort them along column, transpose, add them on to the end of the extracted transposed data from the last round, unique that, etc., etc..
Eventually you will not need any more entries.
Alternately:
the probability of any two given columns being duplicates is 5! * 19! / 24! so the cumulative probability over 100 entries is (1 - (1 - factorial(5)*factorial(19)/factorial(24))^100) which is about 1/4 of 1% . You probably won't get any duplicates. You could just choose to try again. Or you could generate a few extra columns the first time around, and take the first 100 non-duplicates.
Best Answer