Функция sample
Функция sample выбирает заданное количество
случайных элементов из исходного диапазона и
записывает их в результирующий диапазон. Элементы
выбираются без повторов, то есть каждый элемент
исходного диапазона может попасть в выборку не
более одного раза. Порядок элементов в выборке
зависит от реализации. В первый параметр мы
передаем итератор начала исходного диапазона,
во второй - итератор конца исходного диапазона,
в третий - итератор начала результирующего
диапазона, в четвертый - количество элементов,
которое нужно выбрать, а в пятый - генератор
случайных чисел.
Синтаксис
sample(first, last, out, n, gen)
Пример
Давайте выберем 3 случайных элемента из
диапазона чисел от 1 до 5:
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
using namespace std;
int main()
{
vector<int> src = {1, 2, 3, 4, 5};
vector<int> res(3);
random_device rd;
mt19937 gen(rd());
sample(src.begin(), src.end(), res.begin(), 3, gen);
for (int el : res) {
cout << el << ' ';
}
cout << endl;
return 0;
}
Результат выполнения кода:
3 1 4
Пример
Давайте выберем 2 случайных элемента из
диапазона строк и запишем их в другой вектор:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <random>
using namespace std;
int main()
{
vector<string> src = {"a", "b", "c", "d", "e"};
vector<string> res(2);
random_device rd;
mt19937 gen(rd());
sample(src.begin(), src.end(), res.begin(), 2, gen);
for (const string& el : res) {
cout << el << ' ';
}
cout << endl;
return 0;
}
Результат выполнения кода:
"b" "d"