Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
Definido en el encabezado <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(library fundamentals TS v2)

Reordena los elementos en el rango dado [ first , last ) de tal forma que cada posible permutación de esos elementos tenga igual probabilidad de aparición, utilizando el motor de números aleatorios por hilo como generador de números aleatorios.

Contenidos

Parámetros

first, last - el rango de elementos a barajar aleatoriamente
-
RandomIt debe cumplir con los requisitos de ValueSwappable y LegacyRandomAccessIterator .

Valor de retorno

(ninguno)

Complejidad

Lineal en la distancia entre first y last .

Ejemplo

#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';
    }
}

Salida posible:

DACBFE
CDFBAE
BDCAFE
BAFCED

Véase también

(until C++17) (C++11)
reordena aleatoriamente elementos en un rango
(function template)