19#ifndef TESTTOOLS_RANDOM_H
20#define TESTTOOLS_RANDOM_H
24#ifdef ATLAS_GCC_CHECKERS
25#define ATLAS_NOT_REENTRANT [[ATLAS::not_reentrant]]
27#define ATLAS_NOT_REENTRANT
39static const uint32_t
rngmax =
static_cast<uint32_t
> (-1);
55 return static_cast<float>(
rng_seed(
seed)) /
static_cast<float>(
rngmax) * (rmax-rmin) + rmin;
80 URNG(uint32_t the_seed = 1) :
seed(the_seed) {}
121 v1 = 2*(
static_cast<T
>(rng()) /
URNG::max())-1;
122 v2 = 2*(
static_cast<T
>(rng()) /
URNG::max())-1;
126 T fac = sqrt(-2*log(r2) / r2);
T operator()(URNG &rng) const
normal_distribution(T mu, T s)
functions & macros to test the difference between floats
uint32_t rng ATLAS_NOT_REENTRANT()
static const uint32_t rngmax
Maximum number generated.
float randf_seed(uint32_t &seed, float rmax, float rmin=0)
Generate a floating-point random number between rmin and rmax.
uint32_t rng_seed(uint32_t &seed)
Generate a random number between 0 and rngmax.
int randi_seed(uint32_t &seed, int rmax, int rmin=0)
Generate an integer random number between rmin and rmax.
Generator compatible with the C++11 STL UniformRandomNumberGenerator.
static constexpr result_type min()
URNG(uint32_t the_seed=1)
static constexpr result_type max()