生成器类型#
随机数生成器通过将类型传递给 nvplRandCreateGenerator()
创建。NVPL RAND 库中有九种类型的随机数生成器,分为两类
伪随机数生成器
NVPL_RAND_RNG_PSEUDO_XORWOW
,使用 XORWOW 算法实现,是 xor-shift 伪随机数生成器家族的成员 [1]。NVPL_RAND_RNG_PSEUDO_MRG32K3A
,是组合多递归伪随机数生成器家族的成员 [2]。NVPL_RAND_RNG_PSEUDO_PHILOX4_32_10
,是 Philox 家族的成员,Philox 家族是由 D. E. Shaw Research 在 SC11 会议上提出的三种非加密的基于计数器的随机数生成器之一 [3]。NVPL_RAND_RNG_PSEUDO_PCG
,使用 O’Neill 于 2014 年开发的置换同余生成算法实现 [4]。NVPL_RAND_RNG_PSEUDO_MT19937
,是梅森旋转伪随机数生成器家族的成员 [5]。
注意
NVPL_RAND_RNG_PSEUDO_MT19937
仅支持单线程随机数生成。
准随机数生成器 [6]
NVPL_RAND_RNG_QUASI_SOBOL32
,32 位序列的 Sobol’ 生成器。NVPL_RAND_RNG_QUASI_SCRAMBLED_SOBOL32
,32 位序列的 scrambled Sobol’ 生成器。NVPL_RAND_RNG_QUASI_SOBOL64
,64 位序列的 Sobol’ 生成器。NVPL_RAND_RNG_QUASI_SCRAMBLED_SOBOL64
,64 位序列的 scrambled Sobol’ 生成器。
所有准随机变体都在高达 20,000 个维度中生成序列。