27 m_rng{
static_cast<std::uint32_t
>(std::chrono::high_resolution_clock::now().time_since_epoch().count())}
46 template<
typename float_t>
71 void setStdDev(float_t sigma);
78 void setMean(float_t mu);
91 std::normal_distribution<float_t>
m_z_gen;
102 template<
typename float_t>
112 template<
typename float_t>
122 template<
typename float_t>
129 template<
typename float_t>
136 template<
typename float_t>
150 template<
typename float_t>
175 void setSigma(float_t sigma);
182 void setMu(float_t mu);
206 template<
typename float_t>
216 template<
typename float_t>
226 template<
typename float_t>
233 template<
typename float_t>
240 template<
typename float_t>
254 template<
typename float_t>
295 template<
typename float_t>
298 , m_gamma_gen(1.0, 1.0)
303 template<
typename float_t>
311 template<
typename float_t>
325 template<
typename float_t>
366 template<
typename float_t>
374 template<
typename float_t>
382 template<
typename float_t>
400 template<
typename float_t>
443 template<
typename float_t>
458 template<
typename float_t>
462 bool accepted =
false;
480 template<
typename float_t,
typename int_t>
504 void setLambda(float_t lambda);
521 template<
typename float_t,
typename int_t>
528 template<
typename float_t,
typename int_t>
535 template<
typename float_t,
typename int_t>
542 template<
typename float_t,
typename int_t>
556 template<
typename float_t,
typename int_t>
580 void setP(float_t p);
600 template<
typename float_t,
typename int_t>
607 template<
typename float_t,
typename int_t>
614 template<
typename float_t,
typename int_t>
621 template<
typename float_t,
typename int_t>
636 template<
size_t dim,
typename float_t>
642 using Vec = Eigen::Matrix<float_t,dim,1>;
644 using Mat = Eigen::Matrix<float_t,dim,dim>;
668 void setCovar(
const Mat &covMat);
675 void setMean(
const Vec &meanVec);
698 template<
size_t dim,
typename float_t>
708 template<
size_t dim,
typename float_t>
718 template<
size_t dim,
typename float_t>
721 Eigen::SelfAdjointEigenSolver<Mat> eigenSolver(covMat);
722 m_scale_mat = eigenSolver.eigenvectors() * eigenSolver.eigenvalues().cwiseMax(0).cwiseSqrt().asDiagonal();
726 template<
size_t dim,
typename float_t>
733 template<
size_t dim,
typename float_t>
737 for (
size_t i=0; i< dim; ++i)
753 template<
typename float_t>
786 template<
typename float_t>
789 , m_unif_gen(0.0, 1.0)
794 template<
typename float_t>
802 template<
typename float_t>
818 template<
size_t N,
typename float_t>
833 std::array<unsigned int, N>
sample(
const std::array<float_t, N> &logWts);
837 template<
size_t N,
typename float_t>
841 template<
size_t N,
typename float_t>
852 std::array<float_t, N> w;
853 float_t m = *std::max_element(logWts.begin(), logWts.end());
854 std::transform(logWts.begin(), logWts.end(), w.begin(),
855 [&m](float_t d) -> float_t {
return std::exp(d-m); } );
856 std::discrete_distribution<> kGen(w.begin(), w.end());
859 std::array<unsigned int, N> ks;
860 for(
size_t i = 0; i < N; ++i){
861 ks[i] = kGen(this->m_rng);
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:427
float_t m_beta
sigma
Definition: rv_samp.h:361
A class that performs sampling from a univariate Log-Normal distribution.
Definition: rv_samp.h:151
float_t m_p
the mean
Definition: rv_samp.h:596
A class that performs sampling from a univariate Normal distribution.
Definition: rv_samp.h:47
float_t sample()
Draws a random number.
Definition: rv_samp.h:459
A class that performs sampling from a multivariate normal distribution.
Definition: rv_samp.h:637
float_t sample()
draws a random number.
Definition: rv_samp.h:241
Mat m_scale_mat
covariance matrix
Definition: rv_samp.h:690
float_t m_mu
mu
Definition: rv_samp.h:198
void setP(float_t p)
sets the parameter p.
Definition: rv_samp.h:615
MVNSampler()
Default-constructor sets up for multivariate standard Normal random variate generation.
Definition: rv_samp.h:699
float_t m_mu
the mean
Definition: rv_samp.h:430
A class that performs sampling from a univariate Bernoulli distribution.
Definition: rv_samp.h:557
void setCovar(const Mat &covMat)
sets the covariance matrix of the sampler.
Definition: rv_samp.h:719
Eigen::Matrix< float_t, dim, 1 > Vec
Definition: rv_samp.h:642
void setStdDev(float_t sigma)
sets the standard deviation of the sampler.
Definition: rv_samp.h:130
void setMu(float_t mu)
sets the location parameter of the logged random variable.
Definition: rv_samp.h:227
int_t sample()
Draws a random number.
Definition: rv_samp.h:543
rvsamp_base()
The default constructor. This is the only option available. Sets the seed with the clock...
Definition: rv_samp.h:26
A class that performs sampling from a univariate Gamma distribution.
Definition: rv_samp.h:255
std::mt19937 m_rng
prng
Definition: rv_samp.h:33
float_t sample()
Draws a random number.
Definition: rv_samp.h:137
UnivLogNormSampler()
Default-constructor sets up for standard Normal random variate generation.
Definition: rv_samp.h:207
std::gamma_distribution< float_t > m_gamma_gen
makes gamma random variates that we take the reciprocal of
Definition: rv_samp.h:355
int_t sample()
Draws a random number.
Definition: rv_samp.h:622
A class that performs sampling from a truncated univariate Normal distribution.
Definition: rv_samp.h:401
float_t m_sigma
sigma
Definition: rv_samp.h:201
float_t m_upper
the upper bound
Definition: rv_samp.h:439
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:91
float_t m_sigma
the standard deviation
Definition: rv_samp.h:433
float_t sample()
draws a random number.
Definition: rv_samp.h:383
UnivNormSampler()
Default-constructor sets up for standard Normal random variate generation.
Definition: rv_samp.h:103
k_gen()
default constructor. only one available.
Definition: rv_samp.h:838
A class that performs sampling from a univariate Inverse Gamma distribution.
Definition: rv_samp.h:326
UnivInvGammaSampler()
Default-constructor ...
Definition: rv_samp.h:367
float_t m_mu
the mean
Definition: rv_samp.h:94
float_t sample()
draws a random number.
Definition: rv_samp.h:312
std::bernoulli_distribution m_B_gen
makes normal random variates
Definition: rv_samp.h:593
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:195
Vec m_mean
mean vector
Definition: rv_samp.h:693
std::gamma_distribution< float_t > m_gamma_gen
makes gamma random variates
Definition: rv_samp.h:284
auto sample() -> Vec
Draws a random vector.
Definition: rv_samp.h:734
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:444
float_t m_beta
sigma
Definition: rv_samp.h:290
void setMean(const Vec &meanVec)
sets the mean vector of the sampler.
Definition: rv_samp.h:727
float_t m_sigma
the standard deviation
Definition: rv_samp.h:97
void setSigma(float_t sigma)
sets the scale parameter of the logged random variable.
Definition: rv_samp.h:234
std::poisson_distribution< int_t > m_p_gen
makes normal random variates
Definition: rv_samp.h:517
A class that performs sampling with replacement (useful for the index sampler in an APF) ...
Definition: rv_samp.h:819
A class that performs sampling from a Poisson distribution.
Definition: rv_samp.h:481
UnivGammaSampler()
Default-constructor ...
Definition: rv_samp.h:296
float_t m_alpha
mu
Definition: rv_samp.h:358
Base class for all random variable sampler types. Primary benefit is that it sets the seed for you...
Definition: rv_samp.h:19
float_t m_lower
the lower bound
Definition: rv_samp.h:436
std::normal_distribution< float_t > m_z_gen
makes normal random variates
Definition: rv_samp.h:687
Eigen::Matrix< float_t, dim, dim > Mat
Definition: rv_samp.h:644
void setLambda(float_t lambda)
sets the parameter lambda.
Definition: rv_samp.h:536
BernSampler()
Default-constructor sets up for Bernoulli random variate generation with p = .5.
Definition: rv_samp.h:601
PoissonSampler()
Default-constructor sets up for Poisson random variate generation with lambda = 1.
Definition: rv_samp.h:522
void setMean(float_t mu)
sets the mean of the sampler.
Definition: rv_samp.h:123
float_t m_alpha
mu
Definition: rv_samp.h:287