neuro_toolbox
random_generators.hpp
Go to the documentation of this file.
1 #ifndef RANDOM_GENERATORS
2 #define RANDOM_GENERATORS
3 
4 #include "config.hpp"
5 
6 namespace NTB
7 {
8 
9  std::vector<float> rand_uniform(const double low,
10  const double high,
11  const int size,
12  const int seed = -1)
13  {
25  assert(low < high);
26  assert(size > 0);
27 
28  std::vector<float> numbers(size);
29 
30  if (seed >= 0)
31  {
32  std::default_random_engine generator(seed);
33  std::uniform_real_distribution<float> uniform(low, high);
34  for (int i = 0; i < size; ++i)
35  numbers[i] = uniform(generator);
36  }
37  else
38  {
39  std::random_device rd; //Will be used to obtain a seed for the random number engine
40  std::mt19937 generator(rd()); //Standard mersenne_twister_engine seeded with rd()
41  std::uniform_real_distribution<float> uniform(low, high);
42 
43  for (int i = 0; i < size; ++i)
44  numbers[i] = uniform(generator);
45  }
46 
47  return numbers;
48  }
49 
50  //-------------------------------------------------------------------------
51  std::vector<int> randint(const int low,
52  const int high,
53  const int size,
54  const int seed = -1)
55  {
65  assert(low < high);
66  assert(size > 0);
67 
68  std::vector<int> numbers(size);
69 
70  if (seed >= 0)
71  {
72  std::default_random_engine generator(seed);
73  std::uniform_int_distribution<int> uniform(low, high);
74  for (int i = 0; i < size; ++i)
75  numbers[i] = uniform(generator);
76  }
77  else
78  {
79  std::random_device rd; //Will be used to obtain a seed for the random number engine
80  std::mt19937 generator(rd()); //Standard mersenne_twister_engine seeded with rd()
81  std::uniform_int_distribution<int> uniform(low, high);
82 
83  for (int i = 0; i < size; ++i)
84  numbers[i] = uniform(generator);
85  }
86 
87  return numbers;
88  }
89 
90  //-------------------------------------------------------------------------
91 } // namespace NTB
92 
93 #endif // !RANDOM_GENERATORS
std::vector< int > randint(const int low, const int high, const int size, const int seed=-1)
Definition: random_generators.hpp:51
Definition: IO.hpp:6
std::vector< float > rand_uniform(const double low, const double high, const int size, const int seed=-1)
Definition: random_generators.hpp:9