00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __DISTRIB_H_
00016 #define __DISTRIB_H_
00017
00018 #include "defs.h"
00019 #include "random.h"
00020
00021
00031
00038 SIM_API double uniform(double a, double b, int rng=0);
00039
00047 SIM_API double exponential(double mean, int rng=0);
00048
00057 SIM_API double normal(double mean, double stddev, int rng=0);
00058
00074 SIM_API double truncnormal(double mean, double stddev, int rng=0);
00075
00102 SIM_API double gamma_d(double alpha, double beta, int rng=0);
00103
00116 SIM_API double beta(double alpha1, double alpha2, int rng=0);
00117
00136 SIM_API double erlang_k(unsigned int k, double mean, int rng=0);
00137
00153 SIM_API double chi_square(unsigned int k, int rng=0);
00154
00166 SIM_API double student_t(unsigned int i, int rng=0);
00167
00182 SIM_API double cauchy(double a, double b, int rng=0);
00183
00193 SIM_API double triang(double a, double b, double c, int rng=0);
00194
00205 inline double lognormal(double m, double s, int rng=0)
00206 {
00207 return exp(normal(m, s, rng));
00208 }
00209
00229 SIM_API double weibull(double a, double b, int rng=0);
00230
00240 SIM_API double pareto_shifted(double a, double b, double c, int rng=0);
00241
00243
00253
00261 SIM_API int intuniform(int a, int b, int rng=0);
00262
00272 inline int bernoulli(double p, int rng=0)
00273 {
00274 double U = genk_dblrand(rng);
00275 return (p > U) ? 1 : 0;
00276 }
00277
00290 SIM_API int binomial(int n, double p, int rng=0);
00291
00304 SIM_API int geometric(double p, int rng=0);
00305
00318 SIM_API int negbinomial(int n, double p, int rng=0);
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00354 SIM_API int poisson(double lambda, int rng=0);
00355
00357
00367 SIM_API double genk_uniform(double gen_nr, double a, double b);
00368
00372 SIM_API double genk_intuniform(double gen_nr, double a, double b);
00373
00377 SIM_API double genk_exponential(double gen_nr, double p);
00378
00382 SIM_API double genk_normal(double gen_nr, double mean, double variance);
00383
00387 SIM_API double genk_truncnormal(double gen_nr, double mean, double variance);
00389
00390
00391 #endif
00392
00393