Stan Math Library  2.11.0
reverse mode automatic differentiation
beta_binomial_rng.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_SCAL_PROB_BETA_BINOMIAL_RNG_HPP
2 #define STAN_MATH_PRIM_SCAL_PROB_BETA_BINOMIAL_RNG_HPP
3 
18 
19 namespace stan {
20 
21  namespace math {
22 
23  template <class RNG>
24  inline int
25  beta_binomial_rng(const int N,
26  const double alpha,
27  const double beta,
28  RNG& rng) {
29  static const char* function("stan::math::beta_binomial_rng");
30 
33 
34  check_nonnegative(function, "Population size parameter", N);
35  check_positive_finite(function,
36  "First prior sample size parameter", alpha);
37  check_positive_finite(function,
38  "Second prior sample size parameter", beta);
39 
40  double a = stan::math::beta_rng(alpha, beta, rng);
41  while (a > 1 || a < 0)
42  a = stan::math::beta_rng(alpha, beta, rng);
43  return stan::math::binomial_rng(N, a, rng);
44  }
45  }
46 }
47 #endif
double beta_rng(const double alpha, const double beta, RNG &rng)
Definition: beta_rng.hpp:29
int beta_binomial_rng(const int N, const double alpha, const double beta, RNG &rng)
bool check_nonnegative(const char *function, const char *name, const T_y &y)
Return true if y is non-negative.
int binomial_rng(const int N, const double theta, RNG &rng)
bool check_positive_finite(const char *function, const char *name, const T_y &y)
Return true if y is positive and finite.

     [ Stan Home Page ] © 2011–2016, Stan Development Team.