momodudu.zip

#4 std::uniform_int_distribution 본문

C++

#4 std::uniform_int_distribution

ally10 2022. 8. 1. 11:41

 

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