42 : num_samples_(num_samples) {}
45 CHECK_LE(num_samples_, total_num_samples);
46 total_sample_idxs_.resize(total_num_samples);
48 std::iota(total_sample_idxs_.begin(), total_sample_idxs_.end(), 0);
52 return NChooseK(total_sample_idxs_.size(), num_samples_);
56 std::vector<size_t> sampled_idxs(num_samples_);
57 for (
size_t i = 0; i < num_samples_; ++i) {
58 sampled_idxs[i] = total_sample_idxs_[i];
62 total_sample_idxs_.begin() + num_samples_,
63 total_sample_idxs_.end())) {
66 std::iota(total_sample_idxs_.begin(), total_sample_idxs_.end(), 0);
CombinationSampler(const size_t num_samples)
size_t MaxNumSamples() override
void Initialize(const size_t total_num_samples) override
std::vector< size_t > Sample() override
bool NextCombination(Iterator first, Iterator middle, Iterator last)
size_t NChooseK(const size_t n, const size_t k)