13#include <initializer_list>
31 std::random_device rd;
33 uint64_t high =
static_cast<uint64_t
>(rd()) << 32;
34 uint64_t low =
static_cast<uint64_t
>(rd());
48 return std::seed_seq(values);
62 return std::hash<std::string_view>{}(name);
84inline uint64_t
stream_seed(uint64_t base_seed, uint64_t stream_index) {
86 constexpr uint64_t PHI = 0x9E3779B97F4A7C15ULL;
88 return base_seed ^ (stream_index * PHI);
103 constexpr uint64_t A = 6364136223846793005ULL;
104 constexpr uint64_t C = 1442695040888963407ULL;
105 for (uint64_t i = 0; i < n; ++i) {
Definition Distributions.hpp:14
uint64_t hardware_seed()
Generate seed from std::random_device.
Definition Seeding.hpp:30
uint64_t advance_seed(uint64_t seed, uint64_t n)
Advance seed to skip N sequences.
Definition Seeding.hpp:101
std::seed_seq create_seed_seq(std::initializer_list< uint32_t > values)
Create seed sequence from multiple values.
Definition Seeding.hpp:47
uint64_t stream_seed(uint64_t base_seed, uint64_t stream_index)
Combine base seed with stream index for parallel streams.
Definition Seeding.hpp:84
uint64_t seed_from_string(std::string_view name)
Hash-based seed from string.
Definition Seeding.hpp:61