41 explicit SplitMix64(std::uint64_t x) :
x_(x) {}
42 std::uint64_t next()
const {
43 auto z = (
x_ += 0x9e3779b97f4a7c15);
44 z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
45 z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
50 mutable std::uint64_t
x_;
56 s0_ = splitMix64.next();
57 s1_ = splitMix64.next();
58 s2_ = splitMix64.next();
59 s3_ = splitMix64.next();
66 :
s0_(s0), s1_(s1), s2_(s2), s3_(s3) {}
static SeedGenerator & instance()
access to the unique instance