#pragma once #include "random/engine.h" #include //#include #include "utils/matrix.h" #include "utils/vector.h" namespace rng::detail { // // Base functions int // template typename std::enable_if::value, T>::type uniform_serial(const T low, const T high) { std::uniform_int_distribution dist(low, high); return dist(rng::engine()); } // // Base functions float // template typename std::enable_if::value, T>::type uniform_serial(const T low, const T high) { std::uniform_real_distribution dist(low, high); return dist(rng::engine()); } template utils::Vector uniform_serial(const uint64_t size, const T low, const T high){ utils::Vector v(size); for (uint64_t i = 0; i < size; ++i){ v[i] = uniform_serial(low, high); } return v; } template utils::Matrix uniform_serial(const uint64_t rows, const uint64_t cols, const T low, const T high){ utils::Matrix A(rows, cols); for (uint64_t i = 0; i < rows; ++i){ for (uint64_t j = 0; j < cols; ++j){ A(i,j) = uniform_serial(low, high); } } return A; } }