1 #ifndef STAN_MATH_PRIM_MAT_PROB_CATEGORICAL_RNG_HPP 2 #define STAN_MATH_PRIM_MAT_PROB_CATEGORICAL_RNG_HPP 5 #include <boost/random/uniform_01.hpp> 6 #include <boost/random/variate_generator.hpp> 15 const Eigen::Matrix<double, Eigen::Dynamic, 1>& theta, RNG& rng) {
16 using boost::uniform_01;
17 using boost::variate_generator;
19 static const char*
function =
"categorical_rng";
23 variate_generator<RNG&, uniform_01<> > uniform01_rng(rng, uniform_01<>());
25 Eigen::VectorXd index(theta.rows());
30 double c = uniform01_rng();
32 while (c > index(b, 0))
std::vector< T > cumulative_sum(const std::vector< T > &x)
Return the cumulative sum of the specified vector.
void check_simplex(const char *function, const char *name, const Eigen::Matrix< T_prob, Eigen::Dynamic, 1 > &theta)
Check if the specified vector is simplex.
int categorical_rng(const Eigen::Matrix< double, Eigen::Dynamic, 1 > &theta, RNG &rng)