85 void NextBytes(
void* buffer,
size_t buflen);
90 std::vector<uint64_t> NextSample(uint64_t max,
100 std::vector<uint64_t> NextSampleSlow(
101 uint64_t max,
size_t n,
102 const
std::unordered_set<uint64_t>& excluded =
106 void SetSeed(int64_t seed);
114 double random_0_to_2_53 =
static_cast<double>(state0 >> 11);
116 constexpr double k2_53{
static_cast<uint64_t
>(1) << 53};
117 return random_0_to_2_53 / k2_53;
121 static inline void XorShift128(uint64_t* state0, uint64_t* state1) {
122 uint64_t s1 = *state0;
123 uint64_t s0 = *state1;
132 static uint64_t MurmurHash3(uint64_t);
139 return std::numeric_limits<result_type>::max();
143 static const int64_t kMultiplier = 0x5'deec'e66d;
144 static const int64_t kAddend = 0xb;
145 static const int64_t kMask = 0xffff'ffff'ffff;