ranges::shuffle

ranges::shuffle (무작위 섞기 — ranges)

범위의 요소를 난수 생성기로 무작위 섞는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

std::ranges::shuffle[first, last)의 요소를 균일하게 무작위로 재배열해요.

namespace std::ranges {
template< std::random_access_iterator I, std::sentinel_for<I> S,
          class Gen >
requires std::permutable<I> &&
         std::uniform_random_bit_generator<std::remove_reference_t<Gen>>
constexpr I shuffle( I first, S last, Gen&& gen );
}
  • Gen<random>의 난수 생성기(mt19937 등)예요.
  • 반환 값: 범위 끝.
std::random_device rd;
std::mt19937 g(rd());
std::vector<int> v{1,2,3,4,5};
std::ranges::shuffle(v, g);
// 무작위 순서로 섞임

공정한 무작위 섞기가 필요할 때 random_shuffle(폐기) 대신 쓰는 권장 함수이에요.

더 알아보기 (Learn more)

cppreference