2016-03-08 62 views
0

我需要创建一个数字发生器,绘制具有帕累托分布的数字在特定的时间间隔。我正在使用C++。绘图编号与帕雷托分布

我不能使用C++ 11的<random>库,所以我试图通过使用boost库来解决我的问题,在那里我找到了类pareto_distribution。

还有关于这个话题的另一个问题,但他们提出的解决方案并不适合我。

任何人都可以帮助我吗?

在此先感谢。

+2

向我们展示你做了什么 –

+2

“但他们提出的解决方案并没有为我工作。” - 你甚至没有链接到它。所以没有人应该浪费时间给你答案,因为神秘的原因,这很可能“不适合你”。 – sehe

+0

对不起,你是对的。这是我发现的上一个问题的链接:http://stackoverflow.com/questions/29155783/randomly-generated-numbers-from-boost-pareto-distribution?rq=1。我还附上了我根据该解决方案编写的脚本以及错误。感谢您的建议 –

回答

0

这是我写的剧本:

#include <iostream> 
    #include <boost/random/uniform_real_distribution.hpp> 
    #include <boost/random/mersenne_twister.hpp> 
    #include <boost/random/variate_generator.hpp> 
    #include <boost/math/distributions/pareto.hpp> 
    #include <time.h> 

using namespace std; 

int main() 
{ 

    boost::mt19937 *rg = new boost::mt19937(); 
    rg->seed(time(NULL)); 
    boost::math::pareto_distribution<> dist; 
    boost::random::uniform_real_distribution<> uniformReal(1.0,10.0); 

    boost::variate_generator<boost::mt19937&,boost::random::uniform_real_distribution<> > generator(rg, dist); 

    double cdfComplement; 
    cdfComplement = boost::math::complement::cdf(boost::math::complement(dist,generator())); 

    cout << " cdfComplement: " << cdfComplement << endl; 


    return 0; 
} 
+0

它给了我一个错误在这一行:boost :: variate_generator > generator(rg,dist); - 错误:没有匹配的函数来调用 –