32#include "tiny_dnn/config.h"
43 std::mt19937& operator()() {
47 void set_seed(
unsigned int seed) {
57template<
typename T>
inline
58typename std::enable_if<std::is_integral<T>::value,
T>::type
60 std::uniform_int_distribution<T>
dst(
min,
max);
61 return dst(random_generator::get_instance()());
64template<
typename T>
inline
65typename std::enable_if<std::is_floating_point<T>::value, T>::type
66uniform_rand(T min, T max) {
67 std::uniform_real_distribution<T> dst(min, max);
68 return dst(random_generator::get_instance()());
71template<
typename T>
inline
72typename std::enable_if<std::is_floating_point<T>::value, T>::type
73gaussian_rand(T mean, T sigma) {
74 std::normal_distribution<T> dst(mean, sigma);
75 return dst(random_generator::get_instance()());
78inline void set_random_seed(
unsigned int seed) {
79 random_generator::get_instance().set_seed(seed);
82template<
typename Container>
83inline int uniform_idx(
const Container& t) {
84 return uniform_rand(0,
int(t.size() - 1));
87inline bool bernoulli(float_t p) {
88 return uniform_rand(float_t(0), float_t(1)) <= p;
91template<
typename Iter>
92void uniform_rand(Iter begin, Iter end, float_t min, float_t max) {
93 for (Iter it = begin; it != end; ++it)
94 *it = uniform_rand(min, max);
97template<
typename Iter>
98void gaussian_rand(Iter begin, Iter end, float_t mean, float_t sigma) {
99 for (Iter it = begin; it != end; ++it)
100 *it = gaussian_rand(mean, sigma);
Simple image utility class.
Definition image.h:94