NEURON
RNG.h
Go to the documentation of this file.
1 #pragma once
2 #include <cstdint>
3 #include <limits>
4 
5 class RNG {
6 public:
7  using result_type = std::uint32_t;
8 
9  RNG() = default;
10  virtual ~RNG() = default;
11 
12  // Return a long-words word of random bits
13  virtual result_type asLong() = 0;
14  virtual void reset() = 0;
15 
16  // Return random bits converted to a double
17  virtual double asDouble() = 0;
18 
19  static constexpr result_type min() {
20  return std::numeric_limits<result_type>::min();
21  }
22  static constexpr result_type max() {
23  return std::numeric_limits<result_type>::max();
24  }
26  return asLong();
27  }
28 };
Definition: RNG.h:5
static constexpr result_type max()
Definition: RNG.h:22
RNG()=default
virtual ~RNG()=default
result_type operator()()
Definition: RNG.h:25
virtual void reset()=0
std::uint32_t result_type
Definition: RNG.h:7
virtual double asDouble()=0
virtual result_type asLong()=0
static constexpr result_type min()
Definition: RNG.h:19