fpmas 1.6
distribution.h
Go to the documentation of this file.
1#ifndef FPMAS_RANDOM_DISTRIBUTION_H
2#define FPMAS_RANDOM_DISTRIBUTION_H
3
8#include <random>
10
11namespace fpmas { namespace random {
12
23 template<typename Distribution_t>
24 class Distribution : public api::random::Distribution<typename Distribution_t::result_type> {
25 private:
26 Distribution_t distrib;
27
28 public:
32 typedef typename Distribution_t::result_type result_type;
33
40 template<typename... Args>
41 Distribution(Args... args) : distrib(args...) {}
42
53 template<typename Generator_t>
54 result_type operator()(Generator_t& generator) {
55 return distrib(generator);
56 }
57
61 result_type min() const override {
62 return distrib.min();
63 }
64
68 result_type max() const override {
69 return distrib.max();
70 }
71 };
72
77 template<typename IntType = int>
79
84 template<typename FloatType = double>
86
92
97 template<typename IntType = unsigned int>
99
104 template<typename FloatType = double>
106
111 template<typename IntType = int>
113
125 template<typename IntType = std::size_t>
126 class DiscreteDistribution : public Distribution<std::discrete_distribution<IntType>> {
127 public:
129
136 template<typename Container>
137 DiscreteDistribution(const Container& c)
138 : DiscreteDistribution(c.begin(), c.end()) {
139 }
140 };
141
150 template<typename T>
152 private:
153 T value;
154
155 public:
159 typedef T result_type;
160
166 ConstantDistribution(const T& value) : value(value) {}
167
175 template<typename Generator_t>
176 result_type operator()(Generator_t&) {
177 return value;
178 }
179
183 result_type min() const override {
184 return value;
185 }
186
190 result_type max() const override {
191 return value;
192 }
193 };
194}}
195
196#endif
Definition: distribution.h:18
Definition: distribution.h:151
T result_type
Definition: distribution.h:159
result_type max() const override
Definition: distribution.h:190
result_type min() const override
Definition: distribution.h:183
result_type operator()(Generator_t &)
Definition: distribution.h:176
ConstantDistribution(const T &value)
Definition: distribution.h:166
Definition: distribution.h:126
DiscreteDistribution(const Container &c)
Definition: distribution.h:137
Definition: distribution.h:24
Distribution(Args... args)
Definition: distribution.h:41
Distribution_t::result_type result_type
Definition: distribution.h:32
result_type operator()(Generator_t &generator)
Definition: distribution.h:54
result_type min() const override
Definition: distribution.h:61
result_type max() const override
Definition: distribution.h:68
Distribution< std::bernoulli_distribution > BernoulliDistribution
Definition: distribution.h:91
Definition: fpmas.cpp:3