2012-08-15 29 views
0

我正在嘗試使用Boost 1.5中的Gamma分佈。 現在我想要ktheta的值分別爲4和.5。 但我得到一個編譯錯誤,每當我設置THETA < 1.使用boost設置gamma_distribution的參數

/usr/local/include/boost/random/gamma_distribution.hpp:118: boost::random::gamma_distribution<RealType>::gamma_distribution(const RealType&, const RealType&) [with RealType = double]: Assertion `_beta > result_type(0)' failed. 

有什麼辦法來解決相同的價值?

+0

沒有發佈一個小型自包含示例代碼片段,這是很難調試您的問題。 – mavam 2012-08-15 19:22:54

回答

0

看起來你不會正確地將參數傳遞給分配函數。下面是C++ 11版本(升壓工作等效):

#include <random> 
#include <iostream> 
int main() 
{ 
    std::random_device rd; 
    std::mt19937 gen(rd()); 
    double alpha = 4.0; 
    double theta = 0.5; 
    std::gamma_distribution<> gamma(alpha, 1.0/theta); 
    auto value = gamma(gen); 

    // May print: 6.94045. 
    std::cout << value << std::endl; 

    return 0; 
} 

注參數化:

  • alpha是一樣的k
  • beta逆尺度參數和相同1/theta
+0

沒關係。我發現了這個錯誤。 – freeborn 2012-08-16 08:07:16