Namespaces
Variants

std::experimental:: shuffle

From cppreference.net
헤더 파일에 정의됨 <experimental/algorithm>
template < class RandomIt >
void shuffle ( RandomIt first, RandomIt last ) ;
(라이브러리 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)
범위 내 요소들을 무작위로 재정렬
(함수 템플릿)