VoxelEngine
 
Loading...
Searching...
No Matches
Random.h
1#pragma once
2
3#include <cstdint>
4#include <random>
5
6namespace engine {
7
12 class Random {
13 public:
14 static uint32_t hash2D(int x, int y);
15 static uint32_t hash3D(int x, int y, int z);
16
18 static float noise2D(int x, int y);
19 static float noise3D(int x, int y, int z);
20
22 static float random2D(int x, int y);
23 static float random3D(int x, int y, int z);
24
26 static int randomRange2D(int x, int y, int min, int max);
27 static int randomRange3D(int x, int y, int z, int min, int max);
28
30 template <typename T>
31 static T random(T min = 0.0, T max = 1.0) {
32 static std::random_device s_randomDevice;
33 static std::mt19937 s_randomEngine(s_randomDevice());
34 if constexpr (std::is_integral_v<T>) {
35 return std::uniform_int_distribution<T>(min, max)(s_randomEngine);
36 } else {
37 return std::uniform_real_distribution<T>(min, max)(s_randomEngine);
38 }
39 }
40
41 private:
42 static uint32_t hash(uint32_t x);
43 };
44
45} // namespace engine
Definition Random.h:12
static T random(T min=0.0, T max=1.0)
Definition Random.h:31
static float noise2D(int x, int y)
Definition Random.cpp:45
static int randomRange2D(int x, int y, int min, int max)
Definition Random.cpp:53
static float random2D(int x, int y)
Definition Random.cpp:35