momodudu.zip
#4 std::uniform_int_distribution 본문
uniform discrete distribution, 아래와 같이 범위내 정수가 모두 같은 확률 P로 범위 내의 정수 a,b가 나타나는 난수 생성 함수
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(0,9);
int p[10]={};
for (int i=0; i<nrolls; ++i) {
int number = distribution(generator);
++p[number];
}
위와 같은 방식으로 생성자에서 a, b의 범위값을 지정해주며, 난수를 생성하고자 할때는 distribution의 인자로 특정 알고리즘으로 난수를 생성하는 engine을 넣을 수 있다.
위에 예제에서 사용된 default 말고도, std::mt19937과 같은 엔진도 사용할 수 있다.
그리고 distribution역시 Uniform말고도, exponential, discrete 등 여러 형태를 조합해서 사용할 수 있다.
즉, 특정 알고리즘을 사용하는 난수 생성 엔진 + distribution 형태를 조합해서 난수를 여러가지 형태로 만들 수 있다.
'C++' 카테고리의 다른 글
Generics - template instantiation, specialization (0) | 2022.11.22 |
---|---|
#5 constexpr keyword (0) | 2022.08.01 |
#3 Capturing variables in Lambda (0) | 2020.11.25 |
#2 C++ const keyword와 오버로딩에 관하여 (0) | 2019.10.01 |
#1 C++ STL Container (0) | 2019.08.28 |