평균 0과 시그마 1이있는 정규 분포를 생성하기 위해 boost :: normal_distribution을 사용하려고합니다.부스트 정규 분포 클래스를 사용하는 방법은 무엇입니까?
일부 값은 -1 이상 1 이하이므로 다음 코드는 작동하지 않습니다. 해서는 안됩니다.). 내가 잘못하고있는 것을 지적 해 주실 수 있습니까? 내 컴퓨터에
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
int main()
{
boost::mt19937 rng; // I don't seed it on purpouse (it's not relevant)
boost::normal_distribution<> nd(0.0, 1.0);
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<> > var_nor(rng, nd);
int i = 0; for (; i < 10; ++i)
{
double d = var_nor();
std::cout << d << std::endl;
}
}
결과는 다음과 같습니다
0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
모든 값이 -1과 1
사전에 여러분 모두 감사합니다 사이에 없습니다 볼 수 있듯이!
편집 : 이것은 연습을하기 전에 마감일을 지키고 이론을 공부하지 않을 때 일어납니다.
나는 거의 모든 통계를 배제했으나 분산 (분포의 ctor의 두 번째 매개 변수)은 반드시 범위에 대한 절대적인 컷오프를 지정하지 않습니다. 그것은 밖으로 펼쳐지는 일의 척도입니다. –
@Neil Butterworth : 생성자의 두 번째 매개 변수는 표준 편차 (분산의 제곱근)입니다. – jason
글쎄, 나는 거의 모든 것을 잊어 버렸다고 말했어! –