14inline constexpr unsigned int lcg(
const unsigned int seed)
16 constexpr unsigned int a = 1664525;
17 constexpr unsigned int c = 1013904223;
18 constexpr unsigned int m = std::numeric_limits<unsigned int>::max();
19 return (a * seed + c) % m;
22template <const
unsigned int it>
23constexpr unsigned int gen(
const unsigned int N)
28template <>
constexpr unsigned int gen<0>(
const unsigned int N)
33template <const
unsigned int it>
38 constexpr unsigned int m = std::numeric_limits<unsigned int>::max();
39 const unsigned int n =
gen<it>(seed);
40 const float normalized =
static_cast<float>(n) /
static_cast<float>(m);
41 return min + normalized * (max - min);
44template <const tenno::size N, const tenno::size it>
47 [[maybe_unused]]
const float min,
48 [[maybe_unused]]
const float max,
51 if constexpr (it >= N)
63template <const tenno::size N>
65random_array(
const int seed,
const float min = 0,
const float max = 1)
constexpr unsigned int gen(const unsigned int N)
constexpr unsigned int gen< 0 >(const unsigned int N)
constexpr tenno::array< float, N > random_array_impl(const int seed, const float min, const float max, const tenno::array< float, N > vec)
constexpr unsigned int lcg(const unsigned int seed)
constexpr tenno::array< float, N > random_array(const int seed, const float min=0, const float max=1)
constexpr float uniform_real_distribution(const unsigned int seed, const float min=0, const float max=1)