入门#
要使用 NVPL RAND 库,用户需要包含头文件 nvpl_rand.h
以获取函数声明,并链接 NVPL RAND 库。同一个头文件既可用于单线程 NVPL RAND 库,也可用于多线程 NVPL RAND 库。
随机数由生成器生成。要创建所需类型的新生成器句柄(请参阅生成器类型)
对于单线程生成器,请使用
nvplRandCreateGenerator()
。对于多线程生成器,请使用
或者
nvplRandMTCreateGenerator()
,通过指定生成器要使用的线程数,或者
nvplRandMTCreateGeneratorDefault()
。API 中使用的默认线程数是系统支持的并发线程数。
注意
虽然使用 NVPL RAND 多线程 API(即带有 nvplRandMT
前缀的 API)的应用程序需要动态链接到多线程库 libnvpl_rand_mt.so
,但仅使用单线程生成器的应用程序可以链接到 libnvpl_rand.so
或 libnvpl_rand_mt.so
。
创建生成器后,用户可以选择设置多个生成器选项,例如
nvplRandSetPseudoRandomGeneratorSeed()
以设置伪随机生成器的种子,nvplRandSetGeneratorOffset()
以设置偏移量,nvplRandSetQuasiRandomGeneratorDimensions()
以设置准随机生成器的维度数,对于多线程生成器,
nvplRandMTSetGeneratorOrdering()
以设置结果的排序。
注意
种子、偏移量或排序的默认值通常在大多数情况下都足够,因此使用这些 API 是可选的。
生成随机数可以使用
nvplRandGenerate()
生成 32 位整数,或者使用其他生成函数生成具有特定分布的浮点数或整数,例如,nvplRandGenerateUniform()
用于生成均匀分布的 FP32 数字,或者使用通用的nvplRandGenerateDistribution()
生成具有 Gamma 分布的随机数(请参阅生成函数)。