Scroll to navigation

std::experimental::shuffle(3) C++ Standard Libary std::experimental::shuffle(3)

NAME

std::experimental::shuffle - std::experimental::shuffle

Synopsis


Defined in header <experimental/algorithm>
template< class RandomIt> (library fundamentals TS v2)
void shuffle( RandomIt first, RandomIt last);


Reorders the elements in the given range [first, last) such that each possible
permutation of those elements has equal probability of appearance, using the
per-thread random number engine as the random number generator.

Parameters


first, last - the range of elements to shuffle randomly
-
RandomIt must meet the requirements of ValueSwappable and
LegacyRandomAccessIterator.

Return value


(none)

Complexity


Linear in the distance between first and last.

Example

// Run this code


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

Possible output:


DACBFE
CDFBAE
BDCAFE
BAFCED

See also


random_shuffle
shuffle randomly re-orders elements in a range
(until C++17) (function template)
(C++11)

2022.07.31 http://cppreference.com