문제

C++ 표준 라이브러리에 어떤 것이 있는지 알고 싶습니다. 가우스 분포 숫자 생성기 또는 전달해야 할 코드 조각이 있는 경우.

미리 감사드립니다.

도움이 되었습니까?

해결책

표준 라이브러리는 그렇지 않습니다. 그러나 Boost.random은 그렇습니다. 내가 당신이라면 그것을 사용할 것입니다.

다른 팁

C++ 기술 보고서 ​​1에는 난수 생성에 대한 지원이 추가되었습니다.따라서 비교적 최신 컴파일러(visual c++ 2008 GCC 4.3)를 사용하고 있다면 즉시 사용할 수 있을 가능성이 높습니다.

보다 여기 샘플 사용을 위해 std::tr1::normal_distribution (그리고 더 많은).

GNU 과학 도서관에는이 기능이 있습니다. GSL- 가우스 분포

이 질문에 대한 답은 C ++ 11으로 변경됩니다. 임의의 헤더 여기에는 포함됩니다 std :: 정상_distribution. 월터 브라운의 논문 N3551, C ++ 11의 무작위 숫자 생성 아마도이 라이브러리에 대한 더 나은 소개 중 하나 일 것입니다.

다음 코드는이 헤더 사용 방법을 보여줍니다 (라이브를 본다):

#include <iostream>
#include <iomanip>
#include <map>
#include <random>

int main()
{
    std::random_device rd;

    std::mt19937 e2(rd());

    std::normal_distribution<> dist(2, 2);

    std::map<int, int> hist;
    for (int n = 0; n < 10000; ++n) {
        ++hist[std::floor(dist(e2))];
    }

    for (auto p : hist) {
        std::cout << std::fixed << std::setprecision(1) << std::setw(2)
                  << p.first << ' ' << std::string(p.second/200, '*') << '\n';
    }
}

C ++ 11의 임의의 숫자 생성에 대한보다 일반적인 예제를 제공합니다. C ++ 랜덤 플로트 번호 생성 부스트 및 사용의 예제 rand() 또한.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top