Go to the documentation of this file.
    6 #ifdef DROPPINGTHISINRPACKAGE 
   10     #include <Eigen/Dense> 
   37         m_rng{
static_cast<std::uint32_t
>(std::chrono::high_resolution_clock::now().time_since_epoch().count())} 
 
   55 template<
typename float_t>
 
  111 template<
typename float_t>
 
  121 template<
typename float_t>
 
  131 template<
typename float_t>
 
  138 template<
typename float_t>
 
  145 template<
typename float_t>
 
  148     return m_mu + m_sigma * m_z_gen(m_rng);
 
  159 template<
typename float_t>
 
  194 template<
typename float_t>
 
  202 template<
typename float_t>
 
  205     return m_t_gen(m_rng);
 
  216 template<
typename float_t>
 
  248     void setMu(float_t mu);
 
  272 template<
typename float_t>
 
  282 template<
typename float_t>
 
  292 template<
typename float_t>
 
  299 template<
typename float_t>
 
  306 template<
typename float_t>
 
  309     return std::exp(m_mu + m_sigma * m_z_gen(m_rng));
 
  320 template<
typename float_t>
 
  361 template<
typename float_t>
 
  364     , m_gamma_gen(alpha, beta)
 
  369 template<
typename float_t>
 
  372     return m_gamma_gen(m_rng);
 
  383 template<
typename float_t>
 
  424 template<
typename float_t>
 
  427     , m_gamma_gen(1.0, 1.0)
 
  432 template<
typename float_t>
 
  435     , m_gamma_gen(alpha, beta)
 
  440 template<
typename float_t>
 
  443     return 1.0/m_gamma_gen(m_rng);
 
  458 template<
typename float_t>
 
  501 template<
typename float_t>
 
  516 template<
typename float_t>
 
  520     bool accepted = 
false;
 
  523         proposal = m_mu + m_sigma*m_z_gen(this->m_rng);
 
  524         if((m_lower <= proposal) & (proposal <= m_upper))
 
  538 template<
typename float_t, 
typename int_t>
 
  579 template<
typename float_t, 
typename int_t>
 
  586 template<
typename float_t, 
typename int_t>
 
  593 template<
typename float_t, 
typename int_t>
 
  596    m_p_gen.param(
typename decltype(m_p_gen)::param_type(lambda)); 
 
  600 template<
typename float_t, 
typename int_t>
 
  603     return m_p_gen(m_rng);
 
  614 template<
typename float_t, 
typename int_t>
 
  638     void setP(float_t p);
 
  658 template<
typename float_t, 
typename int_t>
 
  665 template<
typename float_t, 
typename int_t>
 
  672 template<
typename float_t, 
typename int_t>
 
  679 template<
typename float_t, 
typename int_t>
 
  682     return (m_B_gen(m_rng)) ? 1 : 0;
 
  694 template<
size_t dim, 
typename float_t>
 
  700     using Vec = Eigen::Matrix<float_t,dim,1>;
 
  702     using Mat = Eigen::Matrix<float_t,dim,dim>;
 
  756 template<
size_t dim, 
typename float_t>
 
  766 template<
size_t dim, 
typename float_t>
 
  776 template<
size_t dim, 
typename float_t>
 
  779     Eigen::SelfAdjointEigenSolver<Mat> eigenSolver(covMat);
 
  780     m_scale_mat = eigenSolver.eigenvectors() * eigenSolver.eigenvalues().cwiseMax(0).cwiseSqrt().asDiagonal();
 
  784 template<
size_t dim, 
typename float_t>
 
  791 template<
size_t dim, 
typename float_t>
 
  795     for (
size_t i=0; i< dim; ++i) 
 
  797         Z(i) = m_z_gen(this->m_rng);
 
  799     return m_mean + m_scale_mat * Z;
 
  811 template<
typename float_t>
 
  844 template<
typename float_t>
 
  847         , m_unif_gen(0.0, 1.0)
 
  852 template<
typename float_t>
 
  855         , m_unif_gen(lower, upper)
 
  860 template<
typename float_t>
 
  863     return m_unif_gen(m_rng);
 
  876 template<
size_t N, 
typename float_t>
 
  891     std::array<unsigned int, N> 
sample(
const std::array<float_t, N> &logWts);     
 
  895 template<
size_t N, 
typename float_t>
 
  899 template<
size_t N, 
typename float_t>
 
  910     std::array<float_t, N> w;
 
  911     float_t m = *std::max_element(logWts.begin(), logWts.end());
 
  912     std::transform(logWts.begin(), logWts.end(), w.begin(), 
 
  913                    [&m](float_t d) -> float_t { return std::exp(d-m); } );
 
  914     std::discrete_distribution<> kGen(w.begin(), w.end());
 
  917     std::array<unsigned int, N> ks;
 
  918     for(
size_t i = 0; i < N; ++i){
 
  919         ks[i] = kGen(this->m_rng);
 
  966 template<
typename float_t>
 
 1011 template<
typename float_t>
 
 1014     , m_first_gamma_gen(alpha, 1.0)
 
 1015     , m_second_gamma_gen(beta, 1.0)
 
 1020 template<
typename float_t>
 
 1023     float_t first = m_first_gamma_gen(m_rng);
 
 1024     float_t second = m_second_gamma_gen(m_rng);
 
 1025     return first / (first + second);
 
  
 
void setMean(const Vec &meanVec)
sets the mean vector of the sampler.
Definition: rv_samp.h:785
 
float_t m_sigma
sigma
Definition: rv_samp.h:267
 
Eigen::Matrix< float_t, dim, dim > Mat
Definition: rv_samp.h:702
 
std::student_t_distribution< float_t > m_t_gen
makes t random variates
Definition: rv_samp.h:189
 
A class that performs sampling from a truncated univariate Normal distribution.
Definition: rv_samp.h:459
 
PoissonSampler()
Default-constructor sets up for Poisson random variate generation with lambda = 1.
Definition: rv_samp.h:580
 
float_t m_mu
the mean
Definition: rv_samp.h:103
 
Mat m_scale_mat
covariance matrix
Definition: rv_samp.h:748
 
std::gamma_distribution< float_t > m_gamma_gen
makes gamma random variates that we take the reciprocal of
Definition: rv_samp.h:413
 
std::poisson_distribution< int_t > m_p_gen
makes normal random variates
Definition: rv_samp.h:575
 
UnivLogNormSampler()
Default-constructor sets up for standard Normal random variate generation.
Definition: rv_samp.h:273
 
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:745
 
void setMean(float_t mu)
sets the mean of the sampler.
Definition: rv_samp.h:132
 
float_t sample()
draws a random number.
Definition: rv_samp.h:441
 
void setP(float_t p)
sets the parameter p.
Definition: rv_samp.h:673
 
float_t m_alpha
mu
Definition: rv_samp.h:353
 
k_gen()
default constructor. only one available.
Definition: rv_samp.h:896
 
UnivStudTSampler()=delete
Default-construction is deleted.
 
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:100
 
TruncUnivNormSampler(float_t mu, float_t sigma, float_t lower, float_t upper)
The user must supply both mean and std. dev.
Definition: rv_samp.h:502
 
float_t sample()
Draws a random number.
Definition: rv_samp.h:146
 
Vec m_mean
mean vector
Definition: rv_samp.h:751
 
float_t m_mu
mu
Definition: rv_samp.h:264
 
float_t sample()
draws a random number.
Definition: rv_samp.h:307
 
std::gamma_distribution< float_t > m_gamma_gen
makes gamma random variates
Definition: rv_samp.h:350
 
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:485
 
void setCovar(const Mat &covMat)
sets the covariance matrix of the sampler.
Definition: rv_samp.h:777
 
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:261
 
float_t m_alpha
mu
Definition: rv_samp.h:416
 
int_t sample()
Draws a random number.
Definition: rv_samp.h:680
 
void setMu(float_t mu)
sets the location parameter of the logged random variable.
Definition: rv_samp.h:293
 
A class that performs sampling from a univariate Gamma distribution.
Definition: rv_samp.h:321
 
MVNSampler()
Default-constructor sets up for multivariate standard Normal random variate generation.
Definition: rv_samp.h:757
 
float_t m_mu
the mean
Definition: rv_samp.h:488
 
UnivGammaSampler()=delete
Default-constructor ...
 
float_t sample()
Draws a random number.
Definition: rv_samp.h:517
 
rvsamp_base()
The default constructor. This is the only option available. Sets the seed with the clock.
Definition: rv_samp.h:36
 
A class that performs sampling from a univariate Inverse Gamma distribution.
Definition: rv_samp.h:384
 
float_t m_p
the mean
Definition: rv_samp.h:654
 
A class that performs sampling with replacement (useful for the index sampler in an APF)
Definition: rv_samp.h:877
 
A class that performs sampling from a Poisson distribution.
Definition: rv_samp.h:539
 
A class that performs sampling from Student's T distribution.
Definition: rv_samp.h:160
 
std::gamma_distribution< float_t > m_first_gamma_gen
makes gamma random variates
Definition: rv_samp.h:997
 
A class that performs sampling from a multivariate normal distribution.
Definition: rv_samp.h:695
 
A class that performs sampling from a univariate Bernoulli distribution.
Definition: rv_samp.h:615
 
float_t sample()
Draws a random number.
Definition: rv_samp.h:203
 
void setSigma(float_t sigma)
sets the scale parameter of the logged random variable.
Definition: rv_samp.h:300
 
float_t m_beta
sigma
Definition: rv_samp.h:356
 
void setStdDev(float_t sigma)
sets the standard deviation of the sampler.
Definition: rv_samp.h:139
 
Eigen::Matrix< float_t, dim, 1 > Vec
Definition: rv_samp.h:700
 
Base class for all random variable sampler types. Primary benefit is that it sets the seed for you.
Definition: rv_samp.h:29
 
float_t m_beta
sigma
Definition: rv_samp.h:419
 
float_t m_upper
the upper bound
Definition: rv_samp.h:497
 
UnivInvGammaSampler()
Default-constructor ...
Definition: rv_samp.h:425
 
std::array< unsigned int, N > sample(const std::array< float_t, N > &logWts)
sample N times from (0,1,...N-1)
Definition: rv_samp.h:900
 
float_t m_beta
the second shape parameter
Definition: rv_samp.h:1006
 
UnivNormSampler()
Default-constructor sets up for standard Normal random variate generation.
Definition: rv_samp.h:112
 
A class that performs sampling from a univariate Log-Normal distribution.
Definition: rv_samp.h:217
 
float_t m_lower
the lower bound
Definition: rv_samp.h:494
 
A class that performs sampling from a univariate Normal distribution.
Definition: rv_samp.h:56
 
float_t m_sigma
the standard deviation
Definition: rv_samp.h:491
 
A class that performs sampling from a Beta distribution.
Definition: rv_samp.h:967
 
float_t m_sigma
the standard deviation
Definition: rv_samp.h:106
 
int_t sample()
Draws a random number.
Definition: rv_samp.h:601
 
float_t sample()
draws a random number.
Definition: rv_samp.h:370
 
std::mt19937 m_rng
prng
Definition: rv_samp.h:43
 
std::bernoulli_distribution m_B_gen
makes normal random variates
Definition: rv_samp.h:651
 
float_t sample()
Draws a random number.
Definition: rv_samp.h:1021
 
float_t m_alpha
the first shape parameter
Definition: rv_samp.h:1003
 
auto sample() -> Vec
Draws a random vector.
Definition: rv_samp.h:792
 
std::gamma_distribution< float_t > m_second_gamma_gen
makes other gamma random variates
Definition: rv_samp.h:1000
 
BernSampler()
Default-constructor sets up for Bernoulli random variate generation with p = .5.
Definition: rv_samp.h:659
 
void setLambda(float_t lambda)
sets the parameter lambda.
Definition: rv_samp.h:594