home | help
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  ran-
     domly
	-
	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)

http://cppreference.com 	   2024.06.10	   std::experimental::shuffle(3)

home | help