지정된 범위 [최소, 최대] 내에서 균일하게 난수를 생성하는 방법을 찾고 있습니다.
rand의 결함
rand()와 모듈러스 연산자를 사용하는 현재 구현은 다음과 같이 균일한 분포를 보장하지 못할 수 있습니다. 동작은 RAND_MAX 및 범위 자체에 따라 다릅니다.
C 11 및 균일 범위 생성
C 11에서 std::uniform_int_distribution은 이러한 요구에 맞는 솔루션을 제공합니다.
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
컨테이너 섞기
컨테이너를 섞으려면 std::shuffle:
#include#include std::vector vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
C 11 컴파일러를 사용할 수 없는 경우 , C 11과 유사한 인터페이스를 제공하는 Boost.Random을 고려해보세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3