STE-Industries: utilities testing
SimpleRandomGenerator.inl
Go to the documentation of this file.
1 
14 namespace GraphicSpace
15 {
16 
31 
32 inline uint_fast32_t SimpleRandomGenerator::Generate(void) noexcept
33  {
34  return Value = (static_cast<uint_fast64_t>(Value) *
35  static_cast<uint_fast64_t>(Multiplier) +
36  static_cast<uint_fast64_t>(Constant)) % Module;
37  }
38 
53 
55  Multiplier(DEFAULT_MULTIPLIER), Constant(DEFAULT_CONSTANT),
56  Module(DEFAULT_MODULE), Value(DEFAULT_SEED)
57  {
58  assert(Module < UINT32_MAX);
59  }
60 
79 
81  thisMultiplier, uint_fast32_t thisConstant,
82  uint_fast32_t thisModule) noexcept: Multiplier(thisMultiplier),
83  Constant(thisConstant), Module(thisModule), Value(DEFAULT_SEED)
84  {
85  assert(Module < UINT32_MAX);
86  }
87 
99 
100 inline void SimpleRandomGenerator::SetSeed(uint_fast32_t Seed) noexcept
101  {
102  Value = Seed % Module;
103  }
104 
114 
115 inline uint_fast32_t SimpleRandomGenerator::GetValue(void) const noexcept
116  {
117  return Value;
118  }
119 
147 
148 inline uint_fast32_t SimpleRandomGenerator::Generate(uint_fast32_t Maximum)
149  noexcept
150  {
151  register uint_fast32_t MaximumValue;
152 
153  assert(Maximum < Module);
154  if (Maximum == 0)
155  return 0;
156  MaximumValue = Module - (Module + 1) % (Maximum + 1);
157  while (Generate() > MaximumValue);
158  return Value % (Maximum + 1);
159  }
160 
161 }
GraphicSpace::SimpleRandomGenerator::SetSeed
void SetSeed(uint_fast32_t thisConstant) noexcept
Definition: SimpleRandomGenerator.inl:100
GraphicSpace::SimpleRandomGenerator::GetValue
uint_fast32_t GetValue(void) const noexcept
Definition: SimpleRandomGenerator.inl:115
GraphicSpace::SimpleRandomGenerator::Generate
uint_fast32_t Generate(void) noexcept
Definition: SimpleRandomGenerator.inl:32
GraphicSpace
Definition: Bitmap.cpp:29
GraphicSpace::SimpleRandomGenerator::SimpleRandomGenerator
SimpleRandomGenerator(void) noexcept
Definition: SimpleRandomGenerator.inl:54