EHS
Loading...
Searching...
No Matches
PRNG.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
EHS.h
"
4
5
namespace
ehs
6
{
7
template
<
typename
T>
8
class
PRNG
9
{
10
private
:
11
T seed;
12
T last;
13
14
public
:
15
PRNG
()
16
: seed(0), last(0)
17
{
18
}
19
20
PRNG
(
const
T seed)
21
: seed(seed), last(seed)
22
{
23
}
24
25
PRNG
(
const
PRNG
& prng)
26
: seed(prng.seed), last(prng.last)
27
{
28
}
29
30
PRNG
&
operator=
(
const
PRNG
& prng)
31
{
32
if
(
this
== &prng)
33
return
*
this
;
34
35
seed = prng.seed;
36
last = prng.last;
37
38
return
*
this
;
39
}
40
41
T
Generate
(
const
T min,
const
T max)
42
{
43
return
Generate
() % (max - min) + min;
44
}
45
46
T
Generate
()
47
{
48
return
((last = last * (T)214013 + (T)2531011) >> 16) & (T)0x7fff;
49
}
50
};
51
52
typedef
PRNG<SInt_64>
PRNG_s64
;
53
typedef
PRNG<UInt_64>
PRNG_u64
;
54
typedef
PRNG<SInt_32>
PRNG_s32
;
55
typedef
PRNG<UInt_32>
PRNG_u32
;
56
typedef
PRNG<SInt_16>
PRNG_s16
;
57
typedef
PRNG<UInt_16>
PRNG_u16
;
58
typedef
PRNG<SInt_8>
PRNG_s8
;
59
typedef
PRNG<UInt_8>
PRNG_u8
;
60
}
EHS.h
ehs::PRNG
Definition
PRNG.h:9
ehs::PRNG::PRNG
PRNG()
Definition
PRNG.h:15
ehs::PRNG::PRNG
PRNG(const PRNG &prng)
Definition
PRNG.h:25
ehs::PRNG::operator=
PRNG & operator=(const PRNG &prng)
Definition
PRNG.h:30
ehs::PRNG::Generate
T Generate()
Definition
PRNG.h:46
ehs::PRNG::Generate
T Generate(const T min, const T max)
Definition
PRNG.h:41
ehs::PRNG::PRNG
PRNG(const T seed)
Definition
PRNG.h:20
ehs
Definition
Anchor.h:6
ehs::PRNG_u16
PRNG< UInt_16 > PRNG_u16
Definition
PRNG.h:57
ehs::PRNG_u32
PRNG< UInt_32 > PRNG_u32
Definition
PRNG.h:55
ehs::PRNG_s32
PRNG< SInt_32 > PRNG_s32
Definition
PRNG.h:54
ehs::PRNG_s16
PRNG< SInt_16 > PRNG_s16
Definition
PRNG.h:56
ehs::PRNG_u8
PRNG< UInt_8 > PRNG_u8
Definition
PRNG.h:59
ehs::PRNG_s64
PRNG< SInt_64 > PRNG_s64
Definition
PRNG.h:52
ehs::PRNG_s8
PRNG< SInt_8 > PRNG_s8
Definition
PRNG.h:58
ehs::PRNG_u64
PRNG< UInt_64 > PRNG_u64
Definition
PRNG.h:53
include
ehs
PRNG.h
Generated by
1.13.2