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

Xoshiro128** 伪随机数生成器,32 位输出,周期 2^128-1。 更多...

#include <RandX.hpp>

Public 类型

using state_type = std::array<std::uint32_t, 4>
 状态类型(4×uint32)
using result_type = std::uint32_t
 输出类型
using state_type = std::array<std::uint32_t, 4>
 状态类型(4×uint32)
using result_type = std::uint32_t
 输出类型

Public 成员函数

constexpr Xoshiro128StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq>
requires (!std::same_as<std::remove_cvref_t<SeedSeq>, Xoshiro128StarStar>)
constexpr Xoshiro128StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
constexpr Xoshiro128StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type operator() () noexcept
 生成下一个 32 位随机数
constexpr void discard (unsigned long long n) noexcept
 跳过 n 个输出
constexpr void jump () noexcept
 前进 2^64 步,用于创建并行子序列
constexpr void longJump () noexcept
 前进 2^96 步,用于创建更稀疏的并行子序列
constexpr state_type serialize () const noexcept
 序列化引擎状态
constexpr void deserialize (state_type state) noexcept
 从状态恢复引擎
RANDX_NODISCARD_CXX20 constexpr Xoshiro128StarStar (std::uint64_t seed=DefaultSeed) noexcept
 以指定种子构造引擎
template<class SeedSeq, std::enable_if_t<!std::is_same_v< std::decay_t< SeedSeq >, Xoshiro128StarStar > > * = nullptr>
RANDX_NODISCARD_CXX20 constexpr Xoshiro128StarStar (SeedSeq &seq)
 从 std::seed_seq 播种
RANDX_NODISCARD_CXX20 constexpr Xoshiro128StarStar (state_type state) noexcept
 从状态数组直接构造
constexpr result_type operator() () noexcept
 生成下一个 32 位随机数
constexpr void discard (unsigned long long n) noexcept
 跳过 n 个输出
constexpr void jump () noexcept
 前进 2^64 步,用于创建并行子序列
constexpr void longJump () noexcept
 前进 2^96 步,用于创建更稀疏的并行子序列
constexpr state_type serialize () const noexcept
 序列化引擎状态
constexpr void deserialize (state_type state) noexcept
 从状态恢复引擎
template<class SeedSeq, std::enable_if_t<!std::is_same_v< std::decay_t< SeedSeq >, Xoshiro128StarStar > > *>
constexpr Xoshiro128StarStar (SeedSeq &seq)

静态 Public 成员函数

static constexpr result_type min () noexcept
 输出范围下界
static constexpr result_type max () noexcept
 输出范围上界
static constexpr result_type min () noexcept
 输出范围下界
static constexpr result_type max () noexcept
 输出范围上界

友元

auto operator<=> (const Xoshiro128StarStar &, const Xoshiro128StarStar &)=default
bool operator== (const Xoshiro128StarStar &lhs, const Xoshiro128StarStar &rhs) noexcept
bool operator!= (const Xoshiro128StarStar &lhs, const Xoshiro128StarStar &rhs) noexcept

详细描述

Xoshiro128** 伪随机数生成器,32 位输出,周期 2^128-1。

状态 16 字节(4×uint32),32 位平台优先选择。 满足 std::uniform_random_bit_generator 概念。 原始实现:http://prng.di.unimi.it/xoshiro128starstar.c(版本 1.1)

注解
非 CSPRNG,不可用于密码学场景。安全场景请使用 ChaCha20。
参见
Xoshiro256StarStar, Xoroshiro64StarStar, ChaCha20

成员类型定义说明

◆ result_type

输出类型

◆ state_type

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

状态类型(4×uint32)

构造及析构函数说明

◆ Xoshiro128StarStar() [1/4]

RANDX_NODISCARD_CXX20 constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar ( std::uint64_t seed = DefaultSeed)
explicitconstexprnoexcept

以指定种子构造引擎

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

◆ Xoshiro128StarStar() [2/4]

template<class SeedSeq, std::enable_if_t<!std::is_same_v< std::decay_t< SeedSeq >, Xoshiro128StarStar > > * = nullptr>
RANDX_NODISCARD_CXX20 constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar ( SeedSeq & seq)
explicitconstexpr

从 std::seed_seq 播种

参数
seq种子序列对象

◆ Xoshiro128StarStar() [3/4]

RANDX_NODISCARD_CXX20 constexpr RandX::Xoshiro128StarStar::Xoshiro128StarStar ( state_type state)
explicitconstexprnoexcept

从状态数组直接构造

参数
stateserialize() 返回的状态

◆ Xoshiro128StarStar() [4/4]

template<class SeedSeq, std::enable_if_t<!std::is_same_v< std::decay_t< SeedSeq >, Xoshiro128StarStar > > *>
RandX::Xoshiro128StarStar::Xoshiro128StarStar ( SeedSeq & seq)
inlineconstexpr
函数调用图:

成员函数说明

◆ deserialize()

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

从状态恢复引擎

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

◆ discard()

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

跳过 n 个输出

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

◆ jump()

void RandX::Xoshiro128StarStar::jump ( )
constexprnoexcept

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

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

◆ longJump()

void RandX::Xoshiro128StarStar::longJump ( )
constexprnoexcept

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

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

◆ max()

constexpr result_type RandX::Xoshiro128StarStar::max ( )
staticnodiscardconstexprnoexcept

输出范围上界

返回
2^32 - 1
函数调用图:

◆ min()

constexpr result_type RandX::Xoshiro128StarStar::min ( )
staticnodiscardconstexprnoexcept

输出范围下界

返回
0
函数调用图:

◆ operator()()

result_type RandX::Xoshiro128StarStar::operator() ( )
constexprnoexcept

生成下一个 32 位随机数

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

◆ serialize()

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

序列化引擎状态

返回
状态数组(4 个 uint32)
参见
deserialize()
函数调用图:

◆ operator!=

bool operator!= ( const Xoshiro128StarStar & lhs,
const Xoshiro128StarStar & rhs )
friend

◆ operator==

bool operator== ( const Xoshiro128StarStar & lhs,
const Xoshiro128StarStar & rhs )
friend

该类的文档由以下文件生成: