This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub kmyk/competitive-programming-library
class xor_shift_128 { public: typedef uint32_t result_type; xor_shift_128(uint32_t seed = 42) { set_seed(seed); } void set_seed(uint32_t seed) { a = seed = 1812433253u * (seed ^ (seed >> 30)); b = seed = 1812433253u * (seed ^ (seed >> 30)) + 1; c = seed = 1812433253u * (seed ^ (seed >> 30)) + 2; d = seed = 1812433253u * (seed ^ (seed >> 30)) + 3; } uint32_t operator() () { uint32_t t = (a ^ (a << 11)); a = b; b = c; c = d; return d = (d ^ (d >> 19)) ^ (t ^ (t >> 8)); } static constexpr uint32_t max() { return numeric_limits<result_type>::max(); } static constexpr uint32_t min() { return numeric_limits<result_type>::min(); } private: uint32_t a, b, c, d; };
#line 1 "old/xorshift.inc.cpp" class xor_shift_128 { public: typedef uint32_t result_type; xor_shift_128(uint32_t seed = 42) { set_seed(seed); } void set_seed(uint32_t seed) { a = seed = 1812433253u * (seed ^ (seed >> 30)); b = seed = 1812433253u * (seed ^ (seed >> 30)) + 1; c = seed = 1812433253u * (seed ^ (seed >> 30)) + 2; d = seed = 1812433253u * (seed ^ (seed >> 30)) + 3; } uint32_t operator() () { uint32_t t = (a ^ (a << 11)); a = b; b = c; c = d; return d = (d ^ (d >> 19)) ^ (t ^ (t >> 8)); } static constexpr uint32_t max() { return numeric_limits<result_type>::max(); } static constexpr uint32_t min() { return numeric_limits<result_type>::min(); } private: uint32_t a, b, c, d; };