9#include <unordered_set>
12#include "XoshiroCpp.hpp"
31 uint64_t logical_id = 0);
41 class RandomGenerator {
43 static uint64_t _epoch;
44 static uint64_t _seed;
45 static ::std::map<uint64_t, ::XoshiroCpp::Xoshiro256PlusPlus> _registry;
46 static ::std::map<uint64_t, uint64_t> _stream_local_epochs;
47 static ::std::mutex _seed_mtx;
50 RandomGenerator() =
default;
54 static XoshiroCpp::Xoshiro256PlusPlus &
instance(uint64_t logical_id = 0);
64#include "CNum/Utils/RandUtils.tpp"
static void reset_state()
Reconstruct all thread local random generators.
static XoshiroCpp::Xoshiro256PlusPlus & instance(uint64_t logical_id=0)
Get the instance of the RandomGenerator.
static void set_global_seed(uint64_t new_seed)
Set the seed for random number generation.
Utilities for generating random numbers.
void generate_n_unique_rand_in_range(size_t low_bound, size_t high_bound, T *out, size_t n, uint64_t logical_id=0)
Generate n unique random integers.
Definition RandUtils.h:3