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