Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
Определено в заголовочном файле <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(TS библиотеки фундаментальных компонентов v2)

Переупорядочивает элементы в заданном диапазоне [ first , last ) таким образом, что каждая возможная перестановка этих элементов имеет равную вероятность появления, используя поточно-ориентированный генератор случайных чисел в качестве генератора случайных чисел.

Содержание

Параметры

first, last - диапазон элементов для случайного перемешивания
-
RandomIt должен соответствовать требованиям ValueSwappable и LegacyRandomAccessIterator .

Возвращаемое значение

(нет)

Сложность

Линейно по расстоянию между first и last .

Пример

#include <experimental/algorithm>
#include <iostream>
#include <string>
int main()
{
    std::string sample{"ABCDEF"};
    for (int i = 0; i != 4; ++i)
    {
        std::experimental::shuffle(sample.begin(), sample.end());
        std::cout << sample << '\n';
    }
}

Возможный вывод:

DACBFE
CDFBAE
BDCAFE
BAFCED

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

(until C++17) (C++11)
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции)