NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
随机数生成器

线性同余法、梅森旋转算法和硬件真随机数生成器实现 更多...

class  random_lcd
 线性同余随机数生成器 更多...
class  random_mt
 梅森旋转随机数生成器 更多...
class  secret
 真随机数生成器 更多...

详细描述

线性同余法、梅森旋转算法和硬件真随机数生成器实现

遵循的国际标准

本实现严格遵循以下密码学与随机数生成相关标准规范:

伪随机数生成器 (PRNG) 标准:

真随机数生成器 (TRNG) 标准:

算法规范参考:

实现细节

生成器 算法 周期长度 适用场景
random_lcd 线性同余法 (glibc 兼容) 2^31 简单模拟、非安全场景
random_mt MT19937 梅森旋转 2^19937 - 1 科学计算、统计分析
secret 操作系统熵源 不可预测 加密密钥、安全令牌

next_int 无偏映射算法

使用 Lemire 算法将均匀分布的 64 位随机数无偏映射到 [0, max):

设 r 为 64 位随机数,计算 m = r * max(128 位中间结果) 取 m 的高 64 位作为结果候选值 若 m 的低 64 位 < max,则进行拒绝采样消除边界偏差

相比简单取模(% max),此算法:

  1. 避免了取模操作引入的分布偏差
  2. 期望拒绝次数 < 1 次,性能接近无拒绝情况
参见
https://www.iso.org/standard/54945.html
https://csrc.nist.gov/projects/random-bit-generation