生成器类型#

随机数生成器通过将类型传递给 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 个维度中生成序列。