/* ----------------------------------------------------------------------- *//** * * @file random_process.cpp * * @brief Generate a random number from a random process * *//* ----------------------------------------------------------------------- */ #include #include #include #include #include "random_process.hpp" using boost::poisson_distribution; using boost::gamma_distribution; using boost::variate_generator; namespace madlib { namespace modules { namespace sample { /** * @brief Poisson distributed random variables given mean */ AnyType poisson_random::run(AnyType &args) { double mean = args[0].getAs(); poisson_distribution pdist(mean); NativeRandomNumberGenerator generator; variate_generator > rvt(generator, pdist); return rvt(); } /** * @brief Gamma distributed random variables given alpha */ AnyType gamma_random::run(AnyType &args) { double alpha = args[0].getAs(); gamma_distribution<> gdist(alpha); NativeRandomNumberGenerator generator; variate_generator > rvt(generator, gdist); return rvt(); } } // namespace sample } // namespace modules } // namespace madlib