std::experimental:: sample
|
헤더 파일에 정의됨
<experimental/algorithm>
|
||
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance,
class
URBG
>
|
(1) | (라이브러리 펀더멘털 TS) |
|
template
<
class
PopulationIterator,
class
SampleIterator,
class
Distance
>
SampleIterator sample
(
PopulationIterator first, PopulationIterator last,
|
(2) | (라이브러리 펀더멘털 TS v2) |
시퀀스
[
first
,
last
)
에서
n
개의 요소를 선택하며, 각 가능한 샘플이 동일한 확률로 나타나도록 하고 선택된 요소들을 출력 반복자
out
에 기록합니다.
만약 n 이 시퀀스의 요소 수보다 크면, last - first 개의 요소를 선택합니다.
이 알고리즘은
PopulationIterator
가
LegacyForwardIterator
요구 사항을 충족할 경우에만 안정적입니다.
목차매개변수
반환값마지막으로 출력된 샘플 이후, 즉 샘플 범위의 끝에 해당하는 out 의 복사본을 반환합니다. 복잡도std:: distance ( first, last ) 에 대해 선형 시간 복잡도를 가짐. 참고 사항이 함수는 선택 샘플링(selection sampling) 또는 저수지 샘플링(reservoir sampling)을 구현할 수 있습니다. 예제
이 코드 실행
#include <experimental/algorithm> #include <iostream> #include <iterator> #include <random> #include <string> int main() { std::string in = "abcdefgh", out; std::experimental::sample(in.begin(), in.end(), std::back_inserter(out), 5, std::mt19937{std::random_device{}()}); std::cout << "five random letters out of " << in << " : " << out << '\n'; } 가능한 출력: five random letters out of abcdefgh : cdefg 참고 항목
| |||||||||||||||||||||||||||||||||