Namespaces
Variants
Actions

std::experimental::shuffle

From cppreference.com
 
 
Experimental
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
 
 
Defined in header <experimental/algorithm>
template< class RandomIt >
void shuffle( RandomIt first, RandomIt last );
(library fundamentals TS v2)

Reorders the elements in the given range [firstlast) 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.

[edit] Parameters

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

[edit] Return value

(none)

[edit] Complexity

Linear in the distance between first and last.

[edit] 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

[edit] See also

(until C++17)(C++11)
randomly re-orders elements in a range
(function template) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/shuffle&oldid=155811"

AltStyle によって変換されたページ (->オリジナル) /