C++:가우스 분포 생성
-
12-09-2019 - |
문제
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()
또한.
제휴하지 않습니다 StackOverflow