diff options
Diffstat (limited to 'src/Math/Random.cpp')
| -rw-r--r-- | src/Math/Random.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/Math/Random.cpp b/src/Math/Random.cpp new file mode 100644 index 0000000..e35cda7 --- /dev/null +++ b/src/Math/Random.cpp @@ -0,0 +1,31 @@ +#include "Random.hpp" + +namespace Math::Random { + +std::array<uint8_t, 4> break_float(const float f) { + static_assert(sizeof(float) == 4); + + union { float f; uint8_t u[4]; } t{}; + t.f = f; + + return { + t.u[0], t.u[1], t.u[2], t.u[3] + }; +} + +float to_float(uint8_t u) { + return (float)u / (float)255; +} + +uint8_t hash(uint8_t x) { + auto o = ((x ^ 0xAA) * 5); + auto rot = o % 8; + return o << rot | o >> (8 - rot); +} + +float random() { + uint8_t r = std::rand() % 255; + return to_float(hash(r)); +} + +} \ No newline at end of file |
