#pragma once #include #include class xorshift32 { public: explicit xorshift32(uint32_t seed = std::random_device{}()) : state(seed ? seed : 0x9e3779b9u) { } uint32_t operator()() { state ^= state << 13; state ^= state >> 17; state ^= state << 5; return state; } private: uint32_t state; };