The scikit-learn classes HalvingGridSearchCV and HalvingRandomSearchCV implement a hyperparameter tuning method known as successive halving. It is an iterative selection process in which all the parameter combinations are evaluated with a small amount of training samples at the first iteration. Only some of these combinations are selected for the next iteration, which will be allocated more training samples, and so on. In each iteration, the number of training samples per parameter combination is multiplied by a fixed factor and the number of parameter combinations is divided by the same factor. (This description was adapted from section 3.2.3. Searching for optimal parameters with successive halving of the scikit-learn user guide.)
How are the successive sets of training samples that are allocated for each iteration determined? Are they selected randomly? Or do they consist of the first n rows of the dataset?