Ich muss einen Zahlengenerator erstellen, der Zahlen mit einer Pareto-Verteilung in einem bestimmten Intervall zeichnet. Ich arbeite in C ++.
Ich kann das nicht benutzen <random>
lib von C ++ 11 Also versuchte ich, mein Problem zu lösen, indem ich die Boost-Bibliothek verwendete, in der ich die Klasse pareto_distribution fand.
Es gibt noch eine andere Frage zu diesem Thema, aber die von ihnen vorgeschlagene Lösung funktioniert für mich nicht.
Kann mir jemand helfen ?
Danke im Voraus.
Antworten:
0 für die Antwort № 1Dies ist das Skript, das ich geschrieben habe:
#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;
}