Функция random_shuffle
Функция random_shuffle перемешивает элементы
контейнера в случайном порядке. Она принимает два
итератора: первый указывает на начало диапазона,
а второй - на конец диапазона. Элементы
переставляются случайным образом. Функция
объявлена в заголовочном файле algorithm.
Синтаксис
random_shuffle(first, last)
random_shuffle(first, last, gen)
Пример
Давайте перемешаем элементы вектора {1, 2, 3, 4, 5}:
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
vector<int> vec = {1, 2, 3, 4, 5};
random_shuffle(vec.begin(), vec.end());
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
3 1 5 2 4
Пример
Давайте перемешаем строку "abcde":
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
string str = "abcde";
random_shuffle(str.begin(), str.end());
cout << str << endl;
return 0;
}
Результат выполнения кода:
"caebd"
Пример
Давайте перемешаем элементы вектора {1, 2, 3, 4, 5},
используя генератор случайных чисел mt19937:
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
using namespace std;
int main()
{
mt19937 gen(42);
vector<int> vec = {1, 2, 3, 4, 5};
random_shuffle(vec.begin(), vec.end(), gen);
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
2 5 1 4 3
Смотрите также
-
функция
rand,
которая генерирует случайное число -
функция
srand,
которая задаёт начальное значение генератора -
класс
mt19937,
который является генератором случайных чисел -
класс
random_device,
который генерирует недетерминированные случайные числа