РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
407 of 815 menu

Функция 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"

Смотрите также

  • функция shuffle,
    которая случайно перемешивает элементы диапазона
  • функция rotate,
    которая выполняет циклический сдвиг элементов
  • функция reverse,
    которая меняет порядок элементов на обратный
  • функция copy,
    которая копирует элементы одного диапазона в другой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить