3#ifndef TETL_RANDOM_BERNOULLI_DISTRIBUTION_HPP
4#define TETL_RANDOM_BERNOULLI_DISTRIBUTION_HPP
29 [[nodiscard]]
constexpr auto p() const noexcept ->
double {
return probability; }
33 return lhs.probability == rhs.probability;
54 [[nodiscard]]
constexpr auto p() const noexcept ->
double {
return _param.p(); }
58 [[nodiscard]]
constexpr auto param() const noexcept ->
param_type {
return _param; }
72 constexpr auto reset() noexcept ->
void { (void)
this; }
74 template <
typename URBG>
77 return (*
this)(g, _param);
80 template <
typename URBG>
84 constexpr auto bits =
~size_t{0};
85 constexpr auto minBits = digits < bits ? digits : bits;
86 static_assert(minBits <= 64);
91 [[nodiscard]]
friend constexpr auto
94 return x.param() == y.param();
constexpr auto generate_canonical(RNG &g) noexcept(noexcept(g())) -> Real
Generates a random floating point number in range [0,1).
Definition generate_canonical.hpp:44
Definition adjacent_find.hpp:8
TETL_BUILTIN_SIZET size_t
etl::size_t is the unsigned integer type of the result of the sizeof operator.
Definition size_t.hpp:14
Definition bernoulli_distribution.hpp:16
constexpr param_type() noexcept
Definition bernoulli_distribution.hpp:19
double probability
Definition bernoulli_distribution.hpp:36
constexpr auto p() const noexcept -> double
Definition bernoulli_distribution.hpp:29
constexpr param_type(double p) noexcept
Definition bernoulli_distribution.hpp:24
friend constexpr auto operator==(param_type const &lhs, param_type const &rhs) noexcept -> bool
Definition bernoulli_distribution.hpp:31
bernoulli_distribution distribution_type
Definition bernoulli_distribution.hpp:17
constexpr bernoulli_distribution(param_type const &parm) noexcept
Definition bernoulli_distribution.hpp:49
constexpr auto operator()(URBG &g) noexcept(noexcept(g())) -> result_type
Definition bernoulli_distribution.hpp:75
friend constexpr auto operator==(bernoulli_distribution const &x, bernoulli_distribution const &y) noexcept -> bool
Definition bernoulli_distribution.hpp:92
constexpr auto param(param_type const &parm) noexcept -> void
Definition bernoulli_distribution.hpp:56
constexpr auto reset() noexcept -> void
Definition bernoulli_distribution.hpp:72
constexpr auto p() const noexcept -> double
Definition bernoulli_distribution.hpp:54
constexpr auto param() const noexcept -> param_type
Definition bernoulli_distribution.hpp:58
constexpr bernoulli_distribution(double p) noexcept
Definition bernoulli_distribution.hpp:44
bool result_type
Definition bernoulli_distribution.hpp:14
constexpr auto max() const noexcept -> result_type
Definition bernoulli_distribution.hpp:66
constexpr auto min() const noexcept -> result_type
Definition bernoulli_distribution.hpp:60
constexpr auto operator()(URBG &g, param_type const &parm) noexcept(noexcept(g())) -> result_type
Definition bernoulli_distribution.hpp:81
constexpr bernoulli_distribution() noexcept
Definition bernoulli_distribution.hpp:39
static constexpr int digits
Definition numeric_limits.hpp:24