Namespaces
Variants

std::experimental:: shuffle

From es.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.

Contenido

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

(hasta C++17)(C++11)
reordena aleatoriamente los elementos de un rango
(plantilla de función & objeto función de algoritmo)