RandX 1.4.3
基于 xoshiro/xoroshiro 算法族的纯头文件伪随机数生成器库
载入中...
搜索中...
未找到
引擎

8 个伪随机数生成引擎(7 非 CSPRNG + 1 ChaCha20 CSPRNG) 更多...

引擎 的协作图:

命名空间

namespace  RandX::detail

class  RandX::SplitMix64
 SplitMix64 伪随机数生成器,64 位输出,周期 2^64。 更多...
class  RandX::Xoshiro256StarStar
 Xoshiro256** 伪随机数生成器,64 位输出,周期 2^256-1。 更多...
class  RandX::Xoroshiro128StarStar
 Xoroshiro128** 伪随机数生成器,64 位输出,周期 2^128-1。 更多...
class  RandX::Xoshiro128StarStar
 Xoshiro128** 伪随机数生成器,32 位输出,周期 2^128-1。 更多...
class  RandX::Xoroshiro64StarStar
 Xoroshiro64** 伪随机数生成器,32 位输出,周期 2^64-1。 更多...
class  RandX::SFC64
 SFC64(Small Fast Counter)伪随机数生成器,64 位输出,周期 >= 2^64。 更多...
class  RandX::RomuDuoJr
 RomuDuoJr 伪随机数生成器,64 位输出,周期估计 >= 2^51。 更多...
class  RandX::ChaCha20
 ChaCha20 密码学安全伪随机数生成器(CSPRNG),64 位输出,符合 RFC 8439。 更多...

类型定义

using RandX::SplitMix64::state_type = std::uint64_t
 状态类型(1×uint64)
using RandX::SplitMix64::result_type = std::uint64_t
 输出类型
using RandX::Xoshiro256StarStar::state_type = std::array<std::uint64_t, 4>
 状态类型(4×uint64)
using RandX::Xoshiro256StarStar::result_type = std::uint64_t
 输出类型
using RandX::Xoroshiro128StarStar::state_type = std::array<std::uint64_t, 2>
 状态类型(2×uint64)
using RandX::Xoroshiro128StarStar::result_type = std::uint64_t
 输出类型
using RandX::Xoshiro128StarStar::state_type = std::array<std::uint32_t, 4>
 状态类型(4×uint32)
using RandX::Xoshiro128StarStar::result_type = std::uint32_t
 输出类型
using RandX::Xoroshiro64StarStar::state_type = std::array<std::uint32_t, 2>
 状态类型(2×uint32)
using RandX::Xoroshiro64StarStar::result_type = std::uint32_t
 输出类型
using RandX::SFC64::state_type = std::array<std::uint64_t, 4>
 状态类型(4×uint64)
using RandX::SFC64::result_type = std::uint64_t
 输出类型
using RandX::RomuDuoJr::state_type = std::array<std::uint64_t, 2>
 状态类型(2×uint64)
using RandX::RomuDuoJr::result_type = std::uint64_t
 输出类型
using RandX::ChaCha20::result_type = std::uint64_t
 输出类型

函数

constexpr RandX::SplitMix64::SplitMix64 (state_type state=DefaultSeed) noexcept
 以指定状态构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, SplitMix64>)
constexpr RandX::SplitMix64::SplitMix64 (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr result_type RandX::SplitMix64::operator() () noexcept
 生成下一个 64 位随机数
constexpr void RandX::SplitMix64::discard (unsigned long long n) noexcept
 跳过 n 个输出
template<std::size_t N>
constexpr std::array< std::uint64_t, N > RandX::SplitMix64::generateSeedSequence () noexcept
 生成 N 个高质量的 64 位种子序列
static constexpr result_type RandX::SplitMix64::min () noexcept
 输出范围下界
static constexpr result_type RandX::SplitMix64::max () noexcept
 输出范围上界
constexpr state_type RandX::SplitMix64::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::SplitMix64::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::Xoshiro256StarStar::Xoshiro256StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoshiro256StarStar>)
constexpr RandX::Xoshiro256StarStar::Xoshiro256StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::Xoshiro256StarStar::Xoshiro256StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::Xoshiro256StarStar::operator() () noexcept
 生成下一个 64 位随机数
constexpr void RandX::Xoshiro256StarStar::discard (unsigned long long n) noexcept
 跳过 n 个输出
constexpr void RandX::Xoshiro256StarStar::jump () noexcept
 前进 2^128 步,用于创建并行子序列
constexpr void RandX::Xoshiro256StarStar::longJump () noexcept
 前进 2^192 步,用于创建更稀疏的并行子序列
static constexpr result_type RandX::Xoshiro256StarStar::min () noexcept
 输出范围下界
static constexpr result_type RandX::Xoshiro256StarStar::max () noexcept
 输出范围上界
constexpr state_type RandX::Xoshiro256StarStar::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::Xoshiro256StarStar::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::Xoroshiro128StarStar::Xoroshiro128StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoroshiro128StarStar>)
constexpr RandX::Xoroshiro128StarStar::Xoroshiro128StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::Xoroshiro128StarStar::Xoroshiro128StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::Xoroshiro128StarStar::operator() () noexcept
 生成下一个 64 位随机数
constexpr void RandX::Xoroshiro128StarStar::discard (unsigned long long n) noexcept
 跳过 n 个输出
constexpr void RandX::Xoroshiro128StarStar::jump () noexcept
 前进 2^64 步,用于创建并行子序列
constexpr void RandX::Xoroshiro128StarStar::longJump () noexcept
 前进 2^96 步,用于创建更稀疏的并行子序列
static constexpr result_type RandX::Xoroshiro128StarStar::min () noexcept
 输出范围下界
static constexpr result_type RandX::Xoroshiro128StarStar::max () noexcept
 输出范围上界
constexpr state_type RandX::Xoroshiro128StarStar::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::Xoroshiro128StarStar::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoshiro128StarStar>)
constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::Xoshiro128StarStar::operator() () noexcept
 生成下一个 32 位随机数
constexpr void RandX::Xoshiro128StarStar::discard (unsigned long long n) noexcept
 跳过 n 个输出
constexpr void RandX::Xoshiro128StarStar::jump () noexcept
 前进 2^64 步,用于创建并行子序列
constexpr void RandX::Xoshiro128StarStar::longJump () noexcept
 前进 2^96 步,用于创建更稀疏的并行子序列
static constexpr result_type RandX::Xoshiro128StarStar::min () noexcept
 输出范围下界
static constexpr result_type RandX::Xoshiro128StarStar::max () noexcept
 输出范围上界
constexpr state_type RandX::Xoshiro128StarStar::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::Xoshiro128StarStar::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::Xoroshiro64StarStar::Xoroshiro64StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoroshiro64StarStar>)
constexpr RandX::Xoroshiro64StarStar::Xoroshiro64StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::Xoroshiro64StarStar::Xoroshiro64StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::Xoroshiro64StarStar::operator() () noexcept
 生成下一个 32 位随机数
constexpr void RandX::Xoroshiro64StarStar::discard (unsigned long long n) noexcept
 跳过 n 个输出
static constexpr result_type RandX::Xoroshiro64StarStar::min () noexcept
 输出范围下界
static constexpr result_type RandX::Xoroshiro64StarStar::max () noexcept
 输出范围上界
constexpr state_type RandX::Xoroshiro64StarStar::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::Xoroshiro64StarStar::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::SFC64::SFC64 (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, SFC64>)
constexpr RandX::SFC64::SFC64 (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::SFC64::SFC64 (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::SFC64::operator() () noexcept
 生成下一个 64 位随机数
constexpr void RandX::SFC64::discard (unsigned long long n) noexcept
 跳过 n 个输出
static constexpr result_type RandX::SFC64::min () noexcept
 输出范围下界
static constexpr result_type RandX::SFC64::max () noexcept
 输出范围上界
constexpr state_type RandX::SFC64::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::SFC64::deserialize (state_type state) noexcept
 从状态恢复引擎
constexpr RandX::RomuDuoJr::RomuDuoJr (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, RomuDuoJr>)
constexpr RandX::RomuDuoJr::RomuDuoJr (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr RandX::RomuDuoJr::RomuDuoJr (state_type state) noexcept
 从状态数组直接构造
constexpr result_type RandX::RomuDuoJr::operator() () noexcept
 生成下一个 64 位随机数
constexpr void RandX::RomuDuoJr::discard (unsigned long long n) noexcept
 跳过 n 个输出
static constexpr result_type RandX::RomuDuoJr::min () noexcept
 输出范围下界
static constexpr result_type RandX::RomuDuoJr::max () noexcept
 输出范围上界
constexpr state_type RandX::RomuDuoJr::serialize () const noexcept
 序列化引擎状态
constexpr void RandX::RomuDuoJr::deserialize (state_type state) noexcept
 从状态恢复引擎
 RandX::ChaCha20::ChaCha20 (const ChaCha20 &)=delete
ChaCha20RandX::ChaCha20::operator= (const ChaCha20 &)=delete
 RandX::ChaCha20::ChaCha20 (ChaCha20 &&other) noexcept
ChaCha20RandX::ChaCha20::operator= (ChaCha20 &&other) noexcept
 RandX::ChaCha20::~ChaCha20 () noexcept
 RandX::ChaCha20::ChaCha20 ()
 构造方式 1:从 OS 熵自动播种(密码学安全,默认)
 RandX::ChaCha20::ChaCha20 (std::uint64_t seed)
 构造方式 2:以显式 64 位种子构造
 RandX::ChaCha20::ChaCha20 (const std::uint8_t *key, std::size_t keyLen, const std::uint8_t *nonce, std::size_t nonceLen, std::uint32_t counter=0)
 构造方式 3:直接指定 key + nonce + counter(高级用法/测试复现)
result_type RandX::ChaCha20::operator() ()
 生成下一个 64 位随机数
void RandX::ChaCha20::discard (unsigned long long n)
 跳过 n 个输出
void RandX::ChaCha20::reseed ()
 从 OS 熵重新播种
static constexpr result_type RandX::ChaCha20::min () noexcept
 输出范围下界
static constexpr result_type RandX::ChaCha20::max () noexcept
 输出范围上界
template<std::same_as< std::uint32_t > Uint32>
constexpr float RandX::FloatFromBits (Uint32 i) noexcept
template<std::same_as< std::uint64_t > Uint64>
constexpr double RandX::DoubleFromBits (Uint64 i) noexcept
template<class CharT, class Traits, detail::SerializableEngine Engine>
std::basic_ostream< CharT, Traits > & RandX::operator<< (std::basic_ostream< CharT, Traits > &os, const Engine &engine)
template<class CharT, class Traits, detail::SerializableEngine Engine>
std::basic_istream< CharT, Traits > & RandX::operator>> (std::basic_istream< CharT, Traits > &is, Engine &engine)
std::uint64_t RandX::RandomSeed ()
 生成非确定性的 64 位种子
Xoshiro256StarStarRandX::DefaultEngine ()

友元

auto RandX::SplitMix64::operator<=> (const SplitMix64 &, const SplitMix64 &)=default
auto RandX::Xoshiro256StarStar::operator<=> (const Xoshiro256StarStar &, const Xoshiro256StarStar &)=default
auto RandX::Xoroshiro128StarStar::operator<=> (const Xoroshiro128StarStar &, const Xoroshiro128StarStar &)=default
auto RandX::Xoshiro128StarStar::operator<=> (const Xoshiro128StarStar &, const Xoshiro128StarStar &)=default
auto RandX::Xoroshiro64StarStar::operator<=> (const Xoroshiro64StarStar &, const Xoroshiro64StarStar &)=default
auto RandX::SFC64::operator<=> (const SFC64 &, const SFC64 &)=default
auto RandX::RomuDuoJr::operator<=> (const RomuDuoJr &, const RomuDuoJr &)=default

详细描述

8 个伪随机数生成引擎(7 非 CSPRNG + 1 ChaCha20 CSPRNG)

类型定义说明

◆ result_type [1/8]

using RandX::ChaCha20::result_type = std::uint64_t

输出类型

◆ result_type [2/8]

using RandX::RomuDuoJr::result_type = std::uint64_t

输出类型

◆ result_type [3/8]

using RandX::SFC64::result_type = std::uint64_t

输出类型

◆ result_type [4/8]

using RandX::SplitMix64::result_type = std::uint64_t

输出类型

◆ result_type [5/8]

输出类型

◆ result_type [6/8]

输出类型

◆ result_type [7/8]

输出类型

◆ result_type [8/8]

输出类型

◆ state_type [1/7]

using RandX::RomuDuoJr::state_type = std::array<std::uint64_t, 2>

状态类型(2×uint64)

◆ state_type [2/7]

using RandX::SFC64::state_type = std::array<std::uint64_t, 4>

状态类型(4×uint64)

◆ state_type [3/7]

using RandX::SplitMix64::state_type = std::uint64_t

状态类型(1×uint64)

◆ state_type [4/7]

using RandX::Xoroshiro128StarStar::state_type = std::array<std::uint64_t, 2>

状态类型(2×uint64)

◆ state_type [5/7]

using RandX::Xoroshiro64StarStar::state_type = std::array<std::uint32_t, 2>

状态类型(2×uint32)

◆ state_type [6/7]

using RandX::Xoshiro128StarStar::state_type = std::array<std::uint32_t, 4>

状态类型(4×uint32)

◆ state_type [7/7]

using RandX::Xoshiro256StarStar::state_type = std::array<std::uint64_t, 4>

状态类型(4×uint64)

函数说明

◆ ChaCha20() [1/5]

RandX::ChaCha20::ChaCha20 ( )
inline

构造方式 1:从 OS 熵自动播种(密码学安全,默认)

注解
推荐用于生产环境的密码学安全场景
函数调用图:

◆ ChaCha20() [2/5]

RandX::ChaCha20::ChaCha20 ( ChaCha20 && other)
inlinenoexcept
函数调用图:

◆ ChaCha20() [3/5]

RandX::ChaCha20::ChaCha20 ( const ChaCha20 & )
delete
函数调用图:

◆ ChaCha20() [4/5]

RandX::ChaCha20::ChaCha20 ( const std::uint8_t * key,
std::size_t keyLen,
const std::uint8_t * nonce,
std::size_t nonceLen,
std::uint32_t counter = 0 )
inline

构造方式 3:直接指定 key + nonce + counter(高级用法/测试复现)

参数
key密钥指针,须为 32 字节
keyLen密钥长度(字节),须为 32,否则抛出 std::invalid_argument
nonce随机数指针,须为 12 字节
nonceLen随机数长度(字节),须为 12,否则抛出 std::invalid_argument
counter32-bit block 计数器初值(默认 0;KAT 测试时显式传 1)
注解
此构造路径不调用 SecureRandomBytes,调用方须自行保证 key/nonce 的熵源

◆ ChaCha20() [5/5]

RandX::ChaCha20::ChaCha20 ( std::uint64_t seed)
inlineexplicitnodiscard

构造方式 2:以显式 64 位种子构造

参数
seed64 位种子值
注解
仅用于测试/复现,非密码学安全(种子空间仅 64-bit)

◆ DefaultEngine()

Xoshiro256StarStar & RandX::DefaultEngine ( )
inlinenodiscard
函数调用图:

◆ deserialize() [1/7]

void RandX::RomuDuoJr::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()

◆ deserialize() [2/7]

void RandX::SFC64::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()

◆ deserialize() [3/7]

void RandX::SplitMix64::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()

◆ deserialize() [4/7]

void RandX::Xoroshiro128StarStar::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()
函数调用图:

◆ deserialize() [5/7]

void RandX::Xoroshiro64StarStar::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()
函数调用图:

◆ deserialize() [6/7]

void RandX::Xoshiro128StarStar::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()
函数调用图:

◆ deserialize() [7/7]

void RandX::Xoshiro256StarStar::deserialize ( state_type state)
inlineconstexprnoexcept

从状态恢复引擎

参数
stateserialize() 返回的状态
参见
serialize()
函数调用图:

◆ discard() [1/8]

void RandX::ChaCha20::discard ( unsigned long long n)
inline

跳过 n 个输出

参数
n跳过次数

◆ discard() [2/8]

void RandX::RomuDuoJr::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [3/8]

void RandX::SFC64::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [4/8]

void RandX::SplitMix64::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [5/8]

void RandX::Xoroshiro128StarStar::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [6/8]

void RandX::Xoroshiro64StarStar::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [7/8]

void RandX::Xoshiro128StarStar::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ discard() [8/8]

void RandX::Xoshiro256StarStar::discard ( unsigned long long n)
inlineconstexprnoexcept

跳过 n 个输出

参数
n跳过次数
函数调用图:

◆ DoubleFromBits()

template<std::same_as< std::uint64_t > Uint64>
double RandX::DoubleFromBits ( Uint64 i)
inlinenodiscardconstexprnoexcept

◆ FloatFromBits()

template<std::same_as< std::uint32_t > Uint32>
float RandX::FloatFromBits ( Uint32 i)
inlinenodiscardconstexprnoexcept

◆ generateSeedSequence()

template<std::size_t N>
std::array< std::uint64_t, N > RandX::SplitMix64::generateSeedSequence ( )
inlinenodiscardconstexprnoexcept

生成 N 个高质量的 64 位种子序列

模板参数
N生成的种子数量
返回
包含 N 个 uint64 的数组,可用于播种其他引擎
函数调用图:

◆ jump() [1/3]

void RandX::Xoroshiro128StarStar::jump ( )
inlineconstexprnoexcept

前进 2^64 步,用于创建并行子序列

注解
等价于调用 2^64 次 operator()
参见
longJump(), MakeStreamEngine()
函数调用图:

◆ jump() [2/3]

void RandX::Xoshiro128StarStar::jump ( )
inlineconstexprnoexcept

前进 2^64 步,用于创建并行子序列

注解
等价于调用 2^64 次 operator()
参见
longJump(), MakeStreamEngine()
函数调用图:

◆ jump() [3/3]

void RandX::Xoshiro256StarStar::jump ( )
inlineconstexprnoexcept

前进 2^128 步,用于创建并行子序列

注解
等价于调用 2^128 次 operator()
参见
longJump(), MakeStreamEngine()
函数调用图:

◆ longJump() [1/3]

void RandX::Xoroshiro128StarStar::longJump ( )
inlineconstexprnoexcept

前进 2^96 步,用于创建更稀疏的并行子序列

注解
等价于调用 2^96 次 operator()
参见
jump(), MakeStreamEngine()
函数调用图:

◆ longJump() [2/3]

void RandX::Xoshiro128StarStar::longJump ( )
inlineconstexprnoexcept

前进 2^96 步,用于创建更稀疏的并行子序列

注解
等价于调用 2^96 次 operator()
参见
jump(), MakeStreamEngine()
函数调用图:

◆ longJump() [3/3]

void RandX::Xoshiro256StarStar::longJump ( )
inlineconstexprnoexcept

前进 2^192 步,用于创建更稀疏的并行子序列

注解
等价于调用 2^192 次 operator()
参见
jump(), MakeStreamEngine()
函数调用图:

◆ max() [1/8]

constexpr result_type RandX::ChaCha20::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ max() [2/8]

RomuDuoJr::result_type RandX::RomuDuoJr::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ max() [3/8]

SFC64::result_type RandX::SFC64::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ max() [4/8]

SplitMix64::result_type RandX::SplitMix64::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ max() [5/8]

Xoroshiro128StarStar::result_type RandX::Xoroshiro128StarStar::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ max() [6/8]

Xoroshiro64StarStar::result_type RandX::Xoroshiro64StarStar::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^32 - 1

◆ max() [7/8]

Xoshiro128StarStar::result_type RandX::Xoshiro128StarStar::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^32 - 1

◆ max() [8/8]

Xoshiro256StarStar::result_type RandX::Xoshiro256StarStar::max ( )
inlinestaticnodiscardconstexprnoexcept

输出范围上界

返回
2^64 - 1

◆ min() [1/8]

constexpr result_type RandX::ChaCha20::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0
函数调用图:

◆ min() [2/8]

RomuDuoJr::result_type RandX::RomuDuoJr::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [3/8]

SFC64::result_type RandX::SFC64::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [4/8]

SplitMix64::result_type RandX::SplitMix64::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [5/8]

Xoroshiro128StarStar::result_type RandX::Xoroshiro128StarStar::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [6/8]

Xoroshiro64StarStar::result_type RandX::Xoroshiro64StarStar::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [7/8]

Xoshiro128StarStar::result_type RandX::Xoshiro128StarStar::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ min() [8/8]

Xoshiro256StarStar::result_type RandX::Xoshiro256StarStar::min ( )
inlinestaticnodiscardconstexprnoexcept

输出范围下界

返回
0

◆ operator()() [1/8]

ChaCha20::result_type RandX::ChaCha20::operator() ( )
inline

生成下一个 64 位随机数

返回
[min(), max()] 区间内的密码学安全伪随机数

◆ operator()() [2/8]

RomuDuoJr::result_type RandX::RomuDuoJr::operator() ( )
inlineconstexprnoexcept

生成下一个 64 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator()() [3/8]

SFC64::result_type RandX::SFC64::operator() ( )
inlineconstexprnoexcept

生成下一个 64 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator()() [4/8]

SplitMix64::result_type RandX::SplitMix64::operator() ( )
inlineconstexprnoexcept

生成下一个 64 位随机数

返回
[min(), max()] 区间内的伪随机数

◆ operator()() [5/8]

Xoroshiro128StarStar::result_type RandX::Xoroshiro128StarStar::operator() ( )
inlineconstexprnoexcept

生成下一个 64 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator()() [6/8]

Xoroshiro64StarStar::result_type RandX::Xoroshiro64StarStar::operator() ( )
inlineconstexprnoexcept

生成下一个 32 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator()() [7/8]

Xoshiro128StarStar::result_type RandX::Xoshiro128StarStar::operator() ( )
inlineconstexprnoexcept

生成下一个 32 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator()() [8/8]

Xoshiro256StarStar::result_type RandX::Xoshiro256StarStar::operator() ( )
inlineconstexprnoexcept

生成下一个 64 位随机数

返回
[min(), max()] 区间内的伪随机数
函数调用图:

◆ operator<<()

template<class CharT, class Traits, detail::SerializableEngine Engine>
std::basic_ostream< CharT, Traits > & RandX::operator<< ( std::basic_ostream< CharT, Traits > & os,
const Engine & engine )

◆ operator=() [1/2]

ChaCha20 & RandX::ChaCha20::operator= ( ChaCha20 && other)
inlinenoexcept
函数调用图:

◆ operator=() [2/2]

ChaCha20 & RandX::ChaCha20::operator= ( const ChaCha20 & )
delete
函数调用图:

◆ operator>>()

template<class CharT, class Traits, detail::SerializableEngine Engine>
std::basic_istream< CharT, Traits > & RandX::operator>> ( std::basic_istream< CharT, Traits > & is,
Engine & engine )

◆ RandomSeed()

std::uint64_t RandX::RandomSeed ( )
inlinenodiscard

生成非确定性的 64 位种子

返回
优先硬件 RNG 的种子值
注解
优先级链:RDRAND (x86_64) → detail::GetOsEntropyBytes → std::random_device → 时间戳回退
函数调用图:

◆ reseed()

void RandX::ChaCha20::reseed ( )
inline

从 OS 熵重新播种

注解
手动触发,重置 counter 与字节缓存
函数调用图:

◆ RomuDuoJr() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, RomuDuoJr>)
RandX::RomuDuoJr::RomuDuoJr ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ RomuDuoJr() [2/3]

RandX::RomuDuoJr::RomuDuoJr ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态

◆ RomuDuoJr() [3/3]

RandX::RomuDuoJr::RomuDuoJr ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值

◆ serialize() [1/7]

RomuDuoJr::state_type RandX::RomuDuoJr::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(2 个 uint64)
参见
deserialize()

◆ serialize() [2/7]

SFC64::state_type RandX::SFC64::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(4 个 uint64)
参见
deserialize()

◆ serialize() [3/7]

SplitMix64::state_type RandX::SplitMix64::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
当前状态值
参见
deserialize()

◆ serialize() [4/7]

Xoroshiro128StarStar::state_type RandX::Xoroshiro128StarStar::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(2 个 uint64)
参见
deserialize()

◆ serialize() [5/7]

Xoroshiro64StarStar::state_type RandX::Xoroshiro64StarStar::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(2 个 uint32)
参见
deserialize()

◆ serialize() [6/7]

Xoshiro128StarStar::state_type RandX::Xoshiro128StarStar::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(4 个 uint32)
参见
deserialize()

◆ serialize() [7/7]

Xoshiro256StarStar::state_type RandX::Xoshiro256StarStar::serialize ( ) const
inlinenodiscardconstexprnoexcept

序列化引擎状态

返回
状态数组(4 个 uint64)
参见
deserialize()

◆ SFC64() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, SFC64>)
RandX::SFC64::SFC64 ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ SFC64() [2/3]

RandX::SFC64::SFC64 ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态

◆ SFC64() [3/3]

RandX::SFC64::SFC64 ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值
函数调用图:

◆ SplitMix64() [1/2]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, SplitMix64>)
RandX::SplitMix64::SplitMix64 ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ SplitMix64() [2/2]

RandX::SplitMix64::SplitMix64 ( state_type state = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定状态构造引擎

参数
state64 位初始状态值

◆ Xoroshiro128StarStar() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoroshiro128StarStar>)
RandX::Xoroshiro128StarStar::Xoroshiro128StarStar ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ Xoroshiro128StarStar() [2/3]

RandX::Xoroshiro128StarStar::Xoroshiro128StarStar ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态
函数调用图:

◆ Xoroshiro128StarStar() [3/3]

RandX::Xoroshiro128StarStar::Xoroshiro128StarStar ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值

◆ Xoroshiro64StarStar() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoroshiro64StarStar>)
RandX::Xoroshiro64StarStar::Xoroshiro64StarStar ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ Xoroshiro64StarStar() [2/3]

RandX::Xoroshiro64StarStar::Xoroshiro64StarStar ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态
函数调用图:

◆ Xoroshiro64StarStar() [3/3]

RandX::Xoroshiro64StarStar::Xoroshiro64StarStar ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值
函数调用图:

◆ Xoshiro128StarStar() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoshiro128StarStar>)
RandX::Xoshiro128StarStar::Xoshiro128StarStar ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ Xoshiro128StarStar() [2/3]

RandX::Xoshiro128StarStar::Xoshiro128StarStar ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态
函数调用图:

◆ Xoshiro128StarStar() [3/3]

RandX::Xoshiro128StarStar::Xoshiro128StarStar ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值
函数调用图:

◆ Xoshiro256StarStar() [1/3]

template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoshiro256StarStar>)
RandX::Xoshiro256StarStar::Xoshiro256StarStar ( SeedSeq & seq)
inlineexplicitnodiscardconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象
函数调用图:

◆ Xoshiro256StarStar() [2/3]

RandX::Xoshiro256StarStar::Xoshiro256StarStar ( state_type state)
inlineexplicitnodiscardconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态
函数调用图:

◆ Xoshiro256StarStar() [3/3]

RandX::Xoshiro256StarStar::Xoshiro256StarStar ( std::uint64_t seed = DefaultSeed)
inlineexplicitnodiscardconstexprnoexcept

以指定种子构造引擎

参数
seed64 位种子值

◆ ~ChaCha20()

RandX::ChaCha20::~ChaCha20 ( )
inlinenoexcept
函数调用图:

友元

◆ operator<=> [1/7]

auto operator<=> ( const RomuDuoJr & ,
const RomuDuoJr &  )
friend

◆ operator<=> [2/7]

auto operator<=> ( const SFC64 & ,
const SFC64 &  )
friend

◆ operator<=> [3/7]

auto operator<=> ( const SplitMix64 & ,
const SplitMix64 &  )
friend

◆ operator<=> [4/7]

auto operator<=> ( const Xoroshiro128StarStar & ,
const Xoroshiro128StarStar &  )
friend

◆ operator<=> [5/7]

auto operator<=> ( const Xoroshiro64StarStar & ,
const Xoroshiro64StarStar &  )
friend

◆ operator<=> [6/7]

auto operator<=> ( const Xoshiro128StarStar & ,
const Xoshiro128StarStar &  )
friend

◆ operator<=> [7/7]

auto operator<=> ( const Xoshiro256StarStar & ,
const Xoshiro256StarStar &  )
friend