sead
Loading...
Searching...
No Matches
seadRandom.h
Go to the documentation of this file.
1#ifndef SEAD_RANDOM_H_
2#define SEAD_RANDOM_H_
3
4#include <basis/seadTypes.h>
5
6namespace sead {
7
8class Random
9{
10public:
12 {
13 init();
14 }
15
16 explicit Random(u32 seed)
17 {
18 init(seed);
19 }
20
21 Random(u32 seed_0, u32 seed_1, u32 seed_2, u32 seed_3)
22 {
23 init(seed_0, seed_1, seed_2, seed_3);
24 }
25
26 void init();
27 void init(u32 seed);
28 void init(u32 seed_0, u32 seed_1, u32 seed_2, u32 seed_3);
29
30 u32 getU32();
31
32 u32 getU32(u32 ceil)
33 {
34 return static_cast<u32>(((u64)getU32() * ceil) >> 32);
35 }
36
37 s32 getS32Range(s32 a, s32 b)
38 {
39 return getU32(b - a) + a;
40 }
41
43 {
44 return getU32() * (1.0f / 4294967296.0f);
45 }
46
47 f32 getF32(f32 ceil)
48 {
49 return getF32() * ceil;
50 }
51
52 f32 getF32Range(f32 a, f32 b)
53 {
54 return getF32(b - a) + a;
55 }
56
58 {
59 return getU32() * (1.0 / 4294967296.0);
60 }
61
62 f64 getF64(f64 ceil)
63 {
64 return getF64() * ceil;
65 }
66
67 f64 getF64Range(f64 a, f64 b)
68 {
69 return getF64(b - a) + a;
70 }
71
73 {
74 return (getU32() & 2) - 1;
75 }
76
77 bool getBool()
78 {
79 return static_cast<bool>(getU32() & 1);
80 }
81
82 void getContext(u32* num_0, u32* num_1, u32* num_2, u32* num_3) const;
83
84private:
89};
90#ifdef cafe
91static_assert(sizeof(Random) == 0x10, "sead::Random size mismatch");
92#endif // cafe
93
94} // namespace sead
95
96#endif // SEAD_RANDOM_H_
Definition seadRandom.h:9
f64 getF64Range(f64 a, f64 b)
Definition seadRandom.h:67
Random()
Definition seadRandom.h:11
Random(u32 seed_0, u32 seed_1, u32 seed_2, u32 seed_3)
Definition seadRandom.h:21
void init()
Definition seadRandom.cpp:7
u32 mZ
Definition seadRandom.h:87
Random(u32 seed)
Definition seadRandom.h:16
f64 getF64(f64 ceil)
Definition seadRandom.h:62
void init(u32 seed)
Definition seadRandom.cpp:12
f32 getF32()
Definition seadRandom.h:42
bool getBool()
Definition seadRandom.h:77
s32 getS32Range(s32 a, s32 b)
Definition seadRandom.h:37
u32 mX
Definition seadRandom.h:85
u32 getU32()
Definition seadRandom.cpp:37
u32 mY
Definition seadRandom.h:86
s32 getSign()
Definition seadRandom.h:72
f64 getF64()
Definition seadRandom.h:57
u32 getU32(u32 ceil)
Definition seadRandom.h:32
void init(u32 seed_0, u32 seed_1, u32 seed_2, u32 seed_3)
Definition seadRandom.cpp:21
void getContext(u32 *num_0, u32 *num_1, u32 *num_2, u32 *num_3) const
Definition seadRandom.cpp:47
f32 getF32Range(f32 a, f32 b)
Definition seadRandom.h:52
f32 getF32(f32 ceil)
Definition seadRandom.h:47
u32 mW
Definition seadRandom.h:88
Definition seadAssert.h:44