21 class TUnuranContDist;
22 class TUnuranDiscrDist;
23 class TUnuranMultiContDist;
64 typedef struct unur_gen UNUR_GEN;
70 typedef struct unur_distr UNUR_DISTR;
73 typedef struct unur_urng UNUR_URNG;
86 TUnuran (TRandom * r = 0,
unsigned int log = 0);
100 TUnuran(
const TUnuran &);
105 TUnuran & operator = (
const TUnuran & rhs);
113 bool Init(
const std::string & distr,
const std::string & method);
123 bool Init(
const TUnuranContDist & distr,
const std::string & method =
"auto");
133 bool Init(
const TUnuranMultiContDist & distr,
const std::string & method =
"hitro");
144 bool Init(
const TUnuranDiscrDist & distr,
const std::string & method =
"auto");
156 bool Init(
const TUnuranEmpDist & distr,
const std::string & method =
"empk");
167 bool InitPoisson(
double mu,
const std::string & method =
"dstd");
177 bool InitBinomial(
unsigned int ntot,
double prob,
const std::string & method =
"dstd");
183 bool ReInitDiscrDist(
unsigned int npar,
double * params);
195 bool SampleMulti(
double * x);
207 void SetRandom(TRandom * r) {
214 TRandom * GetRandom() {
222 void SetSeed(
unsigned int seed);
227 bool SetLogLevel(
unsigned int iflag = 1);
232 bool SetLogStream() {
return false;}
237 const std::string & MethodName()
const {
return fMethod; }
242 bool SetRandomGenerator();
244 bool SetContDistribution(
const TUnuranContDist & dist );
246 bool SetMultiDistribution(
const TUnuranMultiContDist & dist );
248 bool SetDiscreteDistribution(
const TUnuranDiscrDist & dist );
250 bool SetEmpiricalDistribution(
const TUnuranEmpDist & dist );
255 bool SetMethodAndInit();
262 UNUR_DISTR * fUdistr;
264 std::unique_ptr<TUnuranBaseDist> fDist;