FLImaging 6.6.27.1
XorshiroRandomGenerator.h
1#pragma once
10
12namespace FLImaging
13{
15 namespace ImageProcessing
16 {
23 class FL_EXPORT CXorshiroRandomGenerator : public Base::CFLBase
24 {
25 public:
26 CXorshiroRandomGenerator(uint64_t u64Seed = 0);
27
28 #if defined(_MSVC_LANG)
29 #if _MSVC_LANG > 201400
30 CXorshiroRandomGenerator(const CXorshiroRandomGenerator &alg) = default;
31 CXorshiroRandomGenerator(CXorshiroRandomGenerator &&alg) = default;
32 CXorshiroRandomGenerator &operator=(const CXorshiroRandomGenerator &alg) = default;
33 CXorshiroRandomGenerator &operator=(CXorshiroRandomGenerator &&alg) = default;
34 #endif
35 #endif
36
37 virtual ~CXorshiroRandomGenerator();
38
39 public:
40
54 void GenerateUniformRandomValuesU32(Base::CFLArray<uint32_t> &flaRandom, int64_t i64Count, uint32_t u32Min = 0, uint32_t u32Max = UINT32_MAX);
55
69 void GenerateUniformRandomValuesI32(Base::CFLArray<int32_t> &flaRandom, int64_t i64Count, int32_t i32Min = INT32_MIN, int32_t i32Max = INT32_MAX);
70
84 void GenerateUniformRandomValuesF32(Base::CFLArray<float> &flaRandom, int64_t i64Count, float f32Min = 0, float f32Max = 1);
85
99 void GenerateUniformRandomValuesF64(Base::CFLArray<double> &flaRandom, int64_t i64Count, double f64Min = 0, double f64Max = 1);
100
114 void GenerateNormalRandomValuesF32(Base::CFLArray<float> &flaRandom, int64_t i64Count, float f32Mean = 0, float f32Stdev = 1);
115
129 void GenerateNormalRandomValuesF64(Base::CFLArray<double> &flaRandom, int64_t i64Count, double f64Mean = 0, double f64Stdev = 1);
130
139
151 uint32_t GenerateUniformRandomValueU32(uint32_t u32Min, uint32_t u32Max);
152
164 int32_t GenerateUniformRandomValueI32(int32_t i32Min, int32_t i32Max);
165
177 float GenerateUniformRandomValueF32(float f32Min = 0.f, float f32Max = 1.f);
178
187
197 float GenerateStandardNormalRandomValueF32(float &f32StdNormal2nd);
198
210 float GenerateNormalRandomValueF32(float f32Mean = 0.f, float f32Stdev = 1.f);
211
225 float GenerateNormalRandomValueF32(float f32Mean, float f32Stdev, float &f32Normal2nd);
226
235
247 uint64_t GenerateUniformRandomValueU64(uint64_t u64Min, uint64_t u64Max);
248
260 int64_t GenerateUniformRandomValueI64(int64_t i64Min, int64_t i64Max);
261
273 double GenerateUniformRandomValueF64(double f64Min = 0., double f64Max = 1.);
274
283
293 double GenerateStandardNormalRandomValueF64(double &f64StdNormal2nd);
294
306 double GenerateNormalRandomValueF64(double f64Mean = 0., double f64Stdev = 1.);
307
321 double GenerateNormalRandomValueF64(double f64Mean, double f64Stdev, double &f64Normal2nd);
322
327 void Seed(uint64_t u64Seed = 0x9d84a3d390df0c46);
328
334
344 void InitializeExternalState32(uint32_t arrU32State[2], uint64_t u64Seed);
345
355 void InitializeExternalState64(uint64_t arrU64State[2], uint64_t u64Seed);
356
364 void SetInternalState32(const uint32_t arrU32State[2]);
365
373 void SetInternalState64(const uint64_t arrU64State[2]);
374
382 void GetInternalState32(uint32_t arrU32State[2]) const;
383
391 void GetInternalState64(uint64_t arrU64State[2]) const;
392
397 void Jump32();
398
406 void Jump32(uint64_t u64Jump);
407
421 Base::CFLArray<std::pair<uint32_t, uint32_t>> MultipleJump32(uint32_t u32Count, uint64_t u64Jump) const;
422
435
440 void Jump64();
441
451 void Jump64(uint64_t u64JumpLow, uint64_t u64JumpHigh = 0);
452
468 Base::CFLArray<std::pair<uint64_t, uint64_t>> MultipleJump64(uint32_t u32Count, uint64_t u64JumpLow, uint64_t u64JumpHigh = 0) const;
469
482
494 Base::CFLArray<std::pair<uint64_t, uint64_t>> MultipleJump64(const Base::CFLArray<std::pair<uint64_t, uint64_t>> &arrPrU64Count) const;
495
496
497
498 DeclareGetClassType();
499
500 protected:
501
502 uint32_t m_arrU32State[2];
503 uint64_t m_arrU64State[2];
504 };
505 }
506}
Template type 의 배열 클래스.
Definition FLArray.h:53
FLImaging의 최상위 기저 클래스
Definition FLBase.h:36
Base::CFLArray< std::pair< uint64_t, uint64_t > > MultipleJump64(const Base::CFLArray< std::pair< uint64_t, uint64_t > > &arrPrU64Count) const
int64_t GenerateUniformRandomValueI64(int64_t i64Min, int64_t i64Max)
float GenerateStandardNormalRandomValueF32(float &f32StdNormal2nd)
void GenerateUniformRandomValuesU32(Base::CFLArray< uint32_t > &flaRandom, int64_t i64Count, uint32_t u32Min=0, uint32_t u32Max=UINT32_MAX)
void Jump64(uint64_t u64JumpLow, uint64_t u64JumpHigh=0)
float GenerateNormalRandomValueF32(float f32Mean=0.f, float f32Stdev=1.f)
void InitializeExternalState32(uint32_t arrU32State[2], uint64_t u64Seed)
Base::CFLArray< std::pair< uint32_t, uint32_t > > MultipleJump32(const Base::CFLArray< uint64_t > &arrU64Count) const
void SetInternalState64(const uint64_t arrU64State[2])
float GenerateNormalRandomValueF32(float f32Mean, float f32Stdev, float &f32Normal2nd)
void Seed(uint64_t u64Seed=0x9d84a3d390df0c46)
void InitializeExternalState64(uint64_t arrU64State[2], uint64_t u64Seed)
float GenerateUniformRandomValueF32(float f32Min=0.f, float f32Max=1.f)
uint64_t GenerateUniformRandomValueU64(uint64_t u64Min, uint64_t u64Max)
double GenerateStandardNormalRandomValueF64(double &f64StdNormal2nd)
void GenerateUniformRandomValuesF32(Base::CFLArray< float > &flaRandom, int64_t i64Count, float f32Min=0, float f32Max=1)
void SetInternalState32(const uint32_t arrU32State[2])
void GetInternalState64(uint64_t arrU64State[2]) const
uint32_t GenerateUniformRandomValueU32(uint32_t u32Min, uint32_t u32Max)
void GetInternalState32(uint32_t arrU32State[2]) const
double GenerateUniformRandomValueF64(double f64Min=0., double f64Max=1.)
double GenerateNormalRandomValueF64(double f64Mean=0., double f64Stdev=1.)
Base::CFLArray< std::pair< uint64_t, uint64_t > > MultipleJump64(const Base::CFLArray< uint64_t > &arrU64Count) const
void GenerateNormalRandomValuesF32(Base::CFLArray< float > &flaRandom, int64_t i64Count, float f32Mean=0, float f32Stdev=1)
double GenerateNormalRandomValueF64(double f64Mean, double f64Stdev, double &f64Normal2nd)
Base::CFLArray< std::pair< uint32_t, uint32_t > > MultipleJump32(uint32_t u32Count, uint64_t u64Jump) const
Base::CFLArray< std::pair< uint64_t, uint64_t > > MultipleJump64(uint32_t u32Count, uint64_t u64JumpLow, uint64_t u64JumpHigh=0) const
void GenerateUniformRandomValuesI32(Base::CFLArray< int32_t > &flaRandom, int64_t i64Count, int32_t i32Min=INT32_MIN, int32_t i32Max=INT32_MAX)
void GenerateUniformRandomValuesF64(Base::CFLArray< double > &flaRandom, int64_t i64Count, double f64Min=0, double f64Max=1)
int32_t GenerateUniformRandomValueI32(int32_t i32Min, int32_t i32Max)
void GenerateNormalRandomValuesF64(Base::CFLArray< double > &flaRandom, int64_t i64Count, double f64Mean=0, double f64Stdev=1)
Definition AbsoluteThreshold.h:25