MATLAB: Generate Only a Specific Number of Combinations

combinations

I would like to loop through the combinations of 30 take 20 with no repetition and order does not matter. I would only like to compute the first 100 or so combinations as there are over 30,000,000 total combinations. Is there a MatLab function that will allow me to do this? Functions like nchoosek will generate all possible combinations and take a very long time.

Best Answer

There are several functions on the FEX that do something like this. For instance:
One could also make an index into the set by something like this:
A = [88 44 55 66 33 22 11 99 77 66];
idx = randperm(10,4);
A(idx) % A random sampling of 4 elements of A
So you do this in a loop as many times as needed, storing all the idx values and checking for uniqueness, then after the loop you have the needed random samplings.