Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
Défini dans l'en-tête <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(library fundamentals TS v2)

Réordonne les éléments dans la plage donnée [ first , last ) de telle sorte que chaque permutation possible de ces éléments ait une probabilité égale d'apparition, en utilisant le moteur de nombres aléatoires par thread comme générateur de nombres aléatoires.

Table des matières

Paramètres

first, last - la plage d'éléments à mélanger aléatoirement
-
RandomIt doit satisfaire aux exigences de ValueSwappable et LegacyRandomAccessIterator .

Valeur de retour

(aucun)

Complexité

Linéaire en fonction de la distance entre first et last .

Exemple

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

Sortie possible :

DACBFE
CDFBAE
BDCAFE
BAFCED

Voir aussi

(jusqu'en C++17) (C++11)
réorganise aléatoirement les éléments dans une plage
(modèle de fonction)