mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
support C++14 constexpr: random distributions
This commit is contained in:
parent
230630b45b
commit
3c4a465d35
9 changed files with 468 additions and 60 deletions
|
@ -129,9 +129,23 @@ namespace sprout {
|
|||
log_1mp_ = init_log_1mp(p_);
|
||||
}
|
||||
template<typename Engine>
|
||||
SPROUT_CXX14_CONSTEXPR result_type operator()(Engine& eng) const {
|
||||
return static_cast<result_type>(
|
||||
sprout::math::floor(sprout::math::log(RealType(1) - static_cast<RealType>(sprout::random::uniform_01<RealType>()(eng))) / log_1mp_)
|
||||
);
|
||||
}
|
||||
template<typename Engine>
|
||||
SPROUT_CONSTEXPR sprout::random::random_result<Engine, geometric_distribution> const operator()(Engine const& eng) const {
|
||||
return generate(eng);
|
||||
}
|
||||
template<typename Engine>
|
||||
SPROUT_CXX14_CONSTEXPR result_type operator()(Engine& eng, param_type const& parm) const {
|
||||
return geometric_distribution(parm)(eng);
|
||||
}
|
||||
template<typename Engine>
|
||||
SPROUT_CONSTEXPR sprout::random::random_result<Engine, geometric_distribution> const operator()(Engine const& eng, param_type const& parm) const {
|
||||
return geometric_distribution(parm)(eng);
|
||||
}
|
||||
template<typename Elem, typename Traits>
|
||||
friend SPROUT_NON_CONSTEXPR std::basic_istream<Elem, Traits>& operator>>(
|
||||
std::basic_istream<Elem, Traits>& lhs,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue