2011-03-12 4 views
2

나는 boost :: variate_generator를 얻고 싶습니다. 숫자는에 따라 lognormal 분포에 분산되어 있습니다.어떻게 boost :: random에서 lognormal_distribution을 얻을 수 있습니까 :: boost :: math :: lognormal_distribution

wikipedia 항목의 수식을 구현하는 boost :: math의 분포가 있지만 variate_generator와 함께 작동하지 않습니다. 그리고 boost :: random에서 나온 것은 variate_generator와 함께 작동하지만 위에서 언급 한 것과는 다소 다릅니다.

http://www.boost.org/doc/libs/1_46_1/doc/html/boost/lognormal_distribution.html. Mu는 0보다 커야하며, mu 및 sigma는 주어진대로 사용되는 대신 계산됩니다.

누가 이전 공식으로 어떻게 작동하는지 알 수 있습니까?

편집 하워드 Hinnant @

:

생성자에서 호출되는이 초기화() 함수가있다. 그래서 공식은 동일하지만, 시그마와 의미는 (내가 알고하지 않는 이유) 이런 식으로 계산 얻을 :

_nmean = log(_mean*_mean/sqrt(_sigma*_sigma + _mean*_mean)); 
    _nsigma = sqrt(log(_sigma*_sigma/_mean/_mean+result_type(1))); 

답변

2

내가 착각하지만, 부스트 코드를 검사의 수를, 그것은 부스트처럼 나에게 보인다 lognormal_distribution은 위키 백과 설명과 일치합니다. 부스트 문서가 mu와 시그마에서 N subscript를 떨어 뜨린다면 문서는 일관성이있다.

+0

멧돼지에서 일하지 않으려 고합니다. 위의 내용을 편집합니다. – randooom

+1

자, 보았습니다. 방금 개발자의 트렁크에서 업데이트를했습니다. 나는 특정 부스트 버전이 없으며, 단지 팁 - 오브 - 트렁크이다. 내가보기에는 lognormal_distribution의 두 가지 버전이 있습니다. 방금 지적한 것은 "이 클래스는 더 이상 사용되지 않습니다"입니다. 바로 위에 또 다른 구현이 있고 네임 스페이스 boost :: random에 있습니다. 그리고 그것은 당신이 원하는 것처럼 보입니다. –

+1

내가 추가해야합니다. 이 라이브러리는 C++ 0x에서 표준이 될 것이며, 원하는대로 정의 할 것입니다. 사용자 환경은 이미 에 std :: lognormal_distribution을 지원할 수 있습니다. 또는 아마도 std :: tr1 :: lognormal_distribution in . –

관련 문제