Is there an efficient method of sampling an n-choose-k combination at random (with uniform probability, for example)?
I have read this question but it asks for generations of all combinations, not combinations at random.
I general I'm aware of rejection sampling, however it's very inefficient.
I also came across reservoir sampling, but that appears to be primarily geared towards very large or unknown n. I'm more interested in large but finite n (definitely not large enough to not be able to fit in memory. Well. An n-sized array itself will fit in memory, but the state space of all n-choose-k combinations might not).
Is there any survey/review on this topic? Does Knuth cover random n-choose-k sampling in his TAOCP texts?
Thanks in advance.
Edit: To be a bit more specific, a 5-choose-3 space over the string 'ABCDE' would look like this:
['ABC', 'ABD', 'ABE', 'ACD', 'ACE', 'ADE', 'BCD', 'BCE', 'BDE', 'CDE']
(Note: this is combination without replacement). And I want to be able to sample from this space with uniform distribution, using a general algorithm (one that works with arbitrary n and k).