32 #ifndef _GLIBCXX_PARALLEL_RANDOM_NUMBER_H
33 #define _GLIBCXX_PARALLEL_RANDOM_NUMBER_H 1
39 namespace __gnu_parallel
65 #if _GLIBCXX_SCALE_DOWN_FPU
66 return uint32_t(__x * _M_supremum_reciprocal);
76 _M_rand_sup(1ULL << std::numeric_limits<uint32_t>::digits),
87 _M_rand_sup(1ULL << std::numeric_limits<uint32_t>::digits),
111 unsigned long __res =
__cache & ((1 << __bits) - 1);
static uint32_t __scale_down(uint64_t __x, uint64_t _M_supremum, double)
Definition: random_number.h:58
Basic types and typedefs. This file is a GNU parallel extension to the Standard C++ Library...
_RandomNumber()
Default constructor. Seed with 0.
Definition: random_number.h:74
_RandomNumber(uint32_t __seed, uint64_t _M_supremum=0x100000000ULL)
Constructor.
Definition: random_number.h:85
int __bits_left
Definition: random_number.h:55
uint64_t __cache
Definition: random_number.h:52
#define _GLIBCXX_SCALE_DOWN_FPU
Use floating-point scaling instead of modulo for mapping random numbers to a range. This can be faster on certain CPUs.
Definition: compiletime_settings.h:55
uint32_t operator()()
Generate unsigned random 32-bit integer.
Definition: random_number.h:94
double _M_rand_sup_reciprocal
Definition: random_number.h:49
uint32_t operator()(uint64_t local_supremum)
Generate unsigned random 32-bit integer in the interval [0,local_supremum).
Definition: random_number.h:100
Random number generator, based on the Mersenne twister.
Definition: random_number.h:42
uint64_t _M_rand_sup
Definition: random_number.h:47
std::tr1::mt19937 _M_mt
Definition: random_number.h:45
uint64_t _M_supremum
Definition: random_number.h:46
double _M_supremum_reciprocal
Definition: random_number.h:48
unsigned long __genrand_bits(int __bits)
Generate a number of random bits, run-time parameter.
Definition: random_number.h:109