Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
定義先ヘッダ <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(library fundamentals TS v2)

指定された範囲 [ first , last ) 内の要素を並べ替え、各要素の可能な順列が等しい確率で現れるようにします。乱数生成器として スレッド毎乱数エンジン を使用します。

目次

パラメータ

first, last - ランダムにシャッフルする要素の範囲
-
RandomIt ValueSwappable および LegacyRandomAccessIterator の要件を満たさなければならない。

戻り値

(なし)

計算量

first last の間の距離に対して線形。

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

出力例:

DACBFE
CDFBAE
BDCAFE
BAFCED

関連項目

(until C++17) (C++11)
範囲内の要素をランダムに並べ替える
(関数テンプレート)