OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Uniform.h
Go to the documentation of this file.
1 #ifndef OPAL_UNIFORM_H
2 #define OPAL_UNIFORM_H
3 
5 #include "Sample/RNGStream.h"
6 
7 #include <type_traits>
8 
9 template <typename T>
10 class Uniform : public SamplingMethod
11 {
12 
13 public:
14  typedef typename std::conditional<
15  std::is_integral<T>::value,
16  std::uniform_int_distribution<T>,
17  std::uniform_real_distribution<T>
19 
20  Uniform(T lower, T upper)
21  : dist_m(lower, upper)
22  , RNGInstance_m(RNGStream::getInstance())
23  , seed_m(RNGStream::getGlobalSeed())
24  {}
25 
26  Uniform(T lower, T upper, std::size_t seed)
27  : dist_m(lower, upper)
28  , RNGInstance_m(nullptr)
29  , seed_m(seed)
30  {}
31 
33  if ( RNGInstance_m )
35  }
36 
37  void create(boost::shared_ptr<SampleIndividual>& ind, size_t i) {
38  ind->genes[i] = RNGInstance_m->getNext(dist_m);
39  }
40 
41  void allocate(const CmdArguments_t& args, const Comm::Bundle_t& comm) {
42  if ( !RNGInstance_m )
44  }
45 
46  T getNext() {
47  return RNGInstance_m->getNext(dist_m);
48  }
49 
50 private:
52 
54 
55  std::size_t seed_m;
56 };
57 
58 #endif
int seed
The current random seed.
Definition: Options.cpp:41
int island_id
Definition: types.h:15
Definition: rbendmap.h:8
dist_t dist_m
Definition: Uniform.h:51
boost::shared_ptr< CmdArguments > CmdArguments_t
Definition: CmdArguments.h:169
void create(boost::shared_ptr< SampleIndividual > &ind, size_t i)
Definition: Uniform.h:37
void allocate(const CmdArguments_t &args, const Comm::Bundle_t &comm)
Definition: Uniform.h:41
T getNext()
Definition: Uniform.h:46
static void deleteInstance(RNGStream *&generator)
Definition: RNGStream.cpp:21
DISTR::result_type getNext(DISTR &RNGDist)
Definition: RNGStream.h:20
std::conditional< std::is_integral< T >::value, std::uniform_int_distribution< T >, std::uniform_real_distribution< T > >::type dist_t
Definition: Uniform.h:18
Uniform(T lower, T upper)
Definition: Uniform.h:20
~Uniform()
Definition: Uniform.h:32
static RNGStream * getInstance()
Definition: RNGStream.cpp:9
Uniform(T lower, T upper, std::size_t seed)
Definition: Uniform.h:26
bundles all communicators for a specific role/pid
Definition: types.h:14
std::size_t seed_m
Definition: Uniform.h:55
RNGStream * RNGInstance_m
Definition: Uniform.h:53