sample
sample (무작위 표본 추출)
범위에서 무작위로 n개의 표본을 뽑아 출력하는 알고리즘이에요. <algorithm> 헤더, C++17부터.
출처: cppreference
본문
sample은 [first, last)에서 균일하게 n개의 요소를 뽑아 out에 써요.
template< class PopulationIt, class SampleIt, class Distance, class URBG >
SampleIt sample( PopulationIt first, PopulationIt last,
SampleIt out, Distance n, URBG&& g );
URBG는<random>의 균일 난수 비트 생성기(mt19937 등)예요.- 반환 값: 쓰여진 표본 바로 다음 위치.
std::vector<int> v{1,2,3,4,5,6,7,8,9,10};
std::mt19937 rng(42);
std::vector<int> s(3);
std::sample(v.begin(), v.end(), s.begin(), 3, rng);
// 무작위 3개 표본
전체를 섞지 않고 부분 표본만 균일하게 뽑을 때 유용해요.