C++11부터 shuffle
메소드를 제공한다.
Defined in header <algorithm>
template< class RandomIt, class URBG >
void shuffle( RandomIt first, RandomIt last, URBG&& g );
사용 조건은 다음과 같다.
- Random access iterator를 제공해야 한다.
- URBG(Uniform Random Bit Generator)를 사용해야 한다.
- std::mt19937
- 등등 (사실 mt19937 말고는 뭐가 있는지 모르겠다)
std::random_shuffle 메소드가 있었지만 C++14부터 deprecated 되었다. random_shuffle의 지원은 C++14까지 된다고 한다. c++17에선 삭제됐다.
예제는 std::vector를 랜덤 셔플하는 프로그램이다.
#include <random>
#include <algorithm>
#include <iterator>
#include <iostream>
int main()
{
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << "\n";
}
Possible output
8 6 10 4 2 3 7 1 9 5
반응형
'프로그래밍 > C++' 카테고리의 다른 글
bits/stdc++.h 파일 내용 (0) | 2019.02.12 |
---|---|
c++ 로또 번호 생성기 프로그래밍 (0) | 2018.08.09 |
C++ std::string 숫자 여부 판별 (0) | 2017.03.11 |
C++ std::set max element 찾는법 (0) | 2017.01.18 |
C++ online judge에서 freopen 사용방법 (0) | 2016.10.16 |