14 #if QX_CONSTEXPR_SEQUENCE_SUPPORTED 
   30 template<u32 nModulus, u32 nMultiplier, u32 nIncrement>
 
   31 constexpr 
u32 linear_congruential_generator(
u32 nPrev)
 
   33     return (nMultiplier * nPrev + nIncrement) % nModulus;
 
   46 template<u32 nMin, u32 nMax, u32 nModulus, u32 nMultiplier, u32 nIncrement>
 
   47 constexpr 
u32 uniform_distribution(
u32 nPrev)
 
   49     return nMin + linear_congruential_generator<nModulus, nMultiplier, nIncrement>(nPrev) % nMax;
 
   56     u32 nMin        = std::numeric_limits<u32>::min(),
 
   57     u32 nMax        = std::numeric_limits<u32>::max(),
 
   58     u32 nModulus    = 2147483648u,
 
   59     u32 nMultiplier = 1103515245u,
 
   60     u32 nIncrement  = 12345u>
 
   61 using constexpr_random =
 
   62     constexpr_sequence<Tag, u32, nSeed, uniform_distribution<nMin, nMax, nModulus, nMultiplier, nIncrement> >;
 
   72 #define QX_UNIQUE_SEED \ 
   74         (qx::murmur_32_hash(__FILE__ __DATE__ __TIME__, 42u, qx::strlen(__FILE__ __DATE__ __TIME__)) + QX_LINE)) 
std::uint32_t u32
0 .. 18 446 744 073 709 551 615