Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
Definiert im Header <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(Library Fundamentals TS v2)

Ordnet die Elemente im angegebenen Bereich [ first , last ) so um, dass jede mögliche Permutation dieser Elemente die gleiche Wahrscheinlichkeit des Auftretens hat, wobei die pro-Thread-Zufallszahlen-Engine als Zufallszahlengenerator verwendet wird.

Inhaltsverzeichnis

Parameter

first, last - der Bereich der Elemente, die zufällig gemischt werden sollen
-
RandomIt muss die Anforderungen von ValueSwappable und LegacyRandomAccessIterator erfüllen.

Rückgabewert

(keine)

Komplexität

Linear in der Entfernung zwischen first und last .

Beispiel

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

Mögliche Ausgabe:

DACBFE
CDFBAE
BDCAFE
BAFCED

Siehe auch

(bis C++17) (C++11)
ordnet Elemente in einem Bereich zufällig neu an
(Funktions-Template)