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)