This routine is invoked when all input lines are being randomized. It selects the appropriate function and template instantiation based on the command line arguments.
Different randomization algorithms are used when all input lines are being randomized rather than a subset. The key distinction being that if all input needs to be read into memory to support the algorithm, it works better to simply read the data all at once.
There are two different types of algorithms used. Array shuffling is used for unweighted randomization. Sorting is used for weighted randomization or when compatibility mode is needed.
The algorithms used here are all limited by available memory.