4. 模块
以下是所有模块的列表:
4.1. 主机API
4.1.1. 函数列表
mcrandStatus_t MCRANDAPI mcrandCreateGenerator ( mcrandGenerator_t* generator, mcrandRngType_t rng_type )
创建新的随机数生成器。
mcrandStatus_t MCRANDAPI mcrandCreateGeneratorHost ( mcrandGenerator_t* generator, mcrandRngType_t rng_type )
创建新的主机CPU随机数生成器。
mcrandStatus_t MCRANDAPI mcrandCreatePoissonDistribution ( double lambda, mcrandDiscreteDistribution_t* discrete_distribution )
构建泊松分布的直方图数组。
mcrandStatus_t MCRANDAPI mcrandDestroyDistribution ( mcrandDiscreteDistribution_t discrete_distribution )
销毁离散分布(例如泊松分布)的直方图数组。
mcrandStatus_t MCRANDAPI mcrandDestroyGenerator ( mcrandGenerator_t generator )
销毁一个已有的生成器。
mcrandStatus_t MCRANDAPI mcrandGenerate ( mcrandGenerator_t generator, unsigned int* outputPtr, size_t num )
生成32位的伪随机或准随机数。
mcrandStatus_t MCRANDAPI mcrandGenerateLogNormal ( mcrandGenerator_t generator, float* outputPtr, size_t n, float mean, float stddev )
生成对数正态分布的浮点数。
mcrandStatus_t MCRANDAPI mcrandGenerateLogNormalDouble ( mcrandGenerator_t generator, double* outputPtr, size_t n, double mean, double stddev )
生成对数正态分布的双精度浮点数。
mcrandStatus_t MCRANDAPI mcrandGenerateLongLong ( mcrandGenerator_t generator, unsigned long long* outputPtr, size_t num )
生成64位的准随机数。
mcrandStatus_t MCRANDAPI mcrandGenerateNormal ( mcrandGenerator_t generator, float* outputPtr, size_t n, float mean, float stddev )
生成正态分布的双精度浮点数。
mcrandStatus_t MCRANDAPI mcrandGenerateNormalDouble ( mcrandGenerator_t generator, double* outputPtr, size_t n, double mean, double stddev )
生成正态分布的双精度浮点数。
mcrandStatus_t MCRANDAPI mcrandGeneratePoisson ( mcrandGenerator_t generator, unsigned int* outputPtr, size_t n, double lambda )
生成泊松分布的无符号整数。
mcrandStatus_t MCRANDAPI mcrandGenerateSeeds ( mcrandGenerator_t generator )
设置起始状态。
mcrandStatus_t MCRANDAPI mcrandGenerateUniform ( mcrandGenerator_t generator, float* outputPtr, size_t num )
生成均匀分布的浮点数。
mcrandStatus_t MCRANDAPI mcrandGenerateUniformDouble ( mcrandGenerator_t generator, double* outputPtr, size_t num )
生成均匀分布的双精度浮点数。
mcrandStatus_t MCRANDAPI mcrandGetDirectionVectors32 ( mcrandDirectionVectors32_t* vectors, mcrandDirectionVectorSet_t set )
获取32位准随机数生成的方向向量。
mcrandStatus_t MCRANDAPI mcrandGetDirectionVectors64 ( mcrandDirectionVectors64_t* vectors, mcrandDirectionVectorSet_t set )
获取64位准随机数生成的方向向量。
mcrandStatus_t MCRANDAPI mcrandGetProperty ( libraryPropertyType type, int* value )
返回mcrand属性的值。
mcrandStatus_t MCRANDAPI mcrandGetScrambleConstants32 ( unsigned int** constants )
获取用于32位Scrambled Sobol序列的Scramble常数。
mcrandStatus_t MCRANDAPI mcrandGetScrambleConstants64 ( unsigned long long** constants )
获取用于64位Scrambled Sobol序列的Scramble常数。
mcrandStatus_t MCRANDAPI mcrandGetVersion ( int* version )
返回库的版本号。
mcrandStatus_t MCRANDAPI mcrandSetGeneratorOffset ( mcrandGenerator_t generator, unsigned long long offset )
设置伪或准随机数生成器的绝对偏移量。
mcrandStatus_t MCRANDAPI mcrandSetGeneratorOrdering ( mcrandGenerator_t generator, mcrandOrdering_t order )
设置伪或准随机数生成器的结果排序。
mcrandStatus_t MCRANDAPI mcrandSetPseudoRandomGeneratorSeed ( mcrandGenerator_t generator, unsigned long long seed )
设置伪随机数生成器的种子值。
mcrandStatus_t MCRANDAPI mcrandSetQuasiRandomGeneratorDimensions ( mcrandGenerator_t generator, unsigned int num_dimensions )
设置维度数量。
mcrandStatus_t MCRANDAPI mcrandSetStream ( mcrandGenerator_t generator, mcStream_t stream )
为MCRAND内核启动设置当前流。
4.1.2. 枚举
enum HOST::mcrandDirectionVectorSet [inherited]
MCRAND方向向量集的选择
值
MCRAND_DIRECTION_VECTORS_32_JOEKUO6 = 101
根据S. Joe和F. Y. Kuo推荐的多项式生成的特定32位方向向量集,适用于高达20000个维度。
MCRAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6 = 102
根据S. Joe和F. Y. Kuo推荐的多项式生成的特定32位方向向量集,适用于高达20000个维度,并进行了混淆处理。
MCRAND_DIRECTION_VECTORS_64_JOEKUO6 = 103
根据S. Joe和F. Y. Kuo推荐的多项式生成的特定64位方向向量集,适用于高达20000个维度。
MCRAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6 = 104
根据S. Joe和F. Y. Kuo推荐的多项式生成的特定32位方向向量集,适用于高达20000个维度,并进行了混淆处理。
enum HOST::mcrandOrdering [inherited]
MCRAND在内存中的结果排序
值
MCRAND_ORDERING_PSEUDO_BEST = 100
伪随机结果的最佳排序。
MCRAND_ORDERING_PSEUDO_DEFAULT = 101
伪随机结果的特定默认线程顺序,与MCRAND_ORDERING_PSEUDO_BEST相同。
MCRAND_ORDERING_PSEUDO_SEEDED = 102
用于获得快速、低质量伪随机结果的特定种子模式。
MCRAND_ORDERING_PSEUDO_LEGACY = 103
伪随机结果的特定遗留序列,保证在所有mcRAND发布中保持相同。
MCRAND_ORDERING_PSEUDO_DYNAMIC = 104
根据执行设备进行调整的特定顺序,提供最佳性能。
MCRAND_ORDERING_QUASI_DEFAULT = 201
用于拟随机结果的特定n维顺序。
enum HOST::mcrandRngType [inherited]
MCRAND生成器类型
值
MCRAND_RNG_TEST = 0
MCRAND_RNG_PSEUDO_DEFAULT = 100
默认伪随机生成器。
MCRAND_RNG_PSEUDO_XORWOW = 101
XORWOW伪随机生成器。
MCRAND_RNG_PSEUDO_MRG32K3A = 121
MRG32k3a伪随机生成器。
MCRAND_RNG_PSEUDO_MTGP32 = 141
Mersenne Twister MTGP32伪随机生成器。
MCRAND_RNG_PSEUDO_MT19937 = 142
Mersenne Twister MT19937伪随机生成器。
MCRAND_RNG_PSEUDO_PHILOX4_32_10 = 161
PHILOX-4x32-10伪随机生成器。
MCRAND_RNG_QUASI_DEFAULT = 200
默认准随机生成器
MCRAND_RNG_QUASI_SOBOL32 = 201
Sobol32准随机生成器
MCRAND_RNG_QUASI_SCRAMBLED_SOBOL32 = 202
Scrambled Sobol32准随机生成器
MCRAND_RNG_QUASI_SOBOL64 = 203
Sobol64准随机生成器
MCRAND_RNG_QUASI_SCRAMBLED_SOBOL64 = 204
Scrambled Sobol64准随机生成器
enum HOST::mcrandStatus [inherited]
MCRAND函数调用状态类型
值
MCRAND_STATUS_SUCCESS = 0
无错误。
MCRAND_STATUS_VERSION_MISMATCH = 100
头文件和链接库版本不匹配。
MCRAND_STATUS_NOT_INITIALIZED = 101
生成器未初始化。
MCRAND_STATUS_ALLOCATION_FAILED = 102
内存分配失败。
MCRAND_STATUS_TYPE_ERROR = 103
生成器类型错误。
MCRAND_STATUS_OUT_OF_RANGE = 104
参数超出范围。
MCRAND_STATUS_LENGTH_NOT_MULTIPLE = 105
请求的长度不是维度的倍数。
MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED = 106
GPU没有MRG32k3a所需的双精度浮点数。
MCRAND_STATUS_LAUNCH_FAILURE = 201
内核启动错误。
MCRAND_STATUS_PREEXISTING_FAILURE = 202
库入口先前存在的故障。
MCRAND_STATUS_INITIALIZATION_FAILED = 203
MXMACA初始化失败。
MCRAND_STATUS_ARCH_MISMATCH = 204
结构不匹配,GPU不支持请求的功能。
MCRAND_STATUS_INTERNAL_ERROR = 999
库内部错误。
4.1.3. 函数
mcrandStatus_t MCRANDAPI mcrandCreateGenerator ( mcrandGenerator_t* generator, mcrandRngType_t rng_type )
创建一个新的随机数生成器。
参数
generator
生成器的指针
rng_type
要创建的生成器类型
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果GPU设置出现问题,则返回MCRAND_STATUS_INITIALIZATION_FAILED
如果头文件版本与动态链接库版本不匹配,则返回MCRAND_STATUS_VERSION_MISMATCH
如果rng_type的值无效,则返回MCRAND_STATUS_TYPE_ERROR
如果生成器创建成功,则返回MCRAND_STATUS_SUCCESS
描述
创建了一个rng_type类型的新随机数生成器,并将其返回到*generator中。
rng_type的合法值包括:
MCRAND_RNG_PSEUDO_DEFAULT
MCRAND_RNG_PSEUDO_XORWOW
MCRAND_RNG_PSEUDO_MRG32K3A
MCRAND_RNG_PSEUDO_MTGP32
MCRAND_RNG_PSEUDO_MT19937
MCRAND_RNG_PSEUDO_PHILOX4_32_10
MCRAND_RNG_QUASI_DEFAULT
MCRAND_RNG_QUASI_SOBOL32
MCRAND_RNG_QUASI_SCRAMBLED_SOBOL32
MCRAND_RNG_QUASI_SOBOL64
MCRAND_RNG_QUASI_SCRAMBLED_SOBOL64
当rng_type为MCRAND_RNG_PSEUDO_DEFAULT时,选择的类型是MCRAND_RNG_PSEUDO_XORWOW。当rng_type为MCRAND_RNG_QUASI_DEFAULT时,选择的类型是MCRAND_RNG_QUASI_SOBOL32。
rng_type = MCRAND_RNG_PSEUDO_XORWOW的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MRG32K3A的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MTGP32的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MT19937的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_PHILOX4_32_10的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_QUASI_SOBOL32的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SOBOL64的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SCRAMBBLED_SOBOL32的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SCRAMBLED_SOBOL64的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
mcrandStatus_t MCRANDAPI mcrandCreateGeneratorHost ( mcrandGenerator_t* generator, mcrandRngType_t rng_type )
创建新的主机CPU随机数生成器。
参数
generator
生成器的指针
rng_type
要创建的生成器类型
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果GPU设置出现问题,则返回MCRAND_STATUS_INITIALIZATION_FAILED
如果头文件版本与动态链接库版本不匹配,则返回MCRAND_STATUS_VERSION_MISMATCH
如果rng_type的值无效,则返回MCRAND_STATUS_TYPE_ERROR
如果生成器创建成功,则返回MCRAND_STATUS_SUCCESS
描述
创建一个新的类型为rng_type的主机CPU随机数生成器,并将其返回到*generator中。
rng_type的合法值为:
MCRAND_RNG_PSEUDO_DEFAULT
MCRAND_RNG_PSEUDO_XORWOW
MCRAND_RNG_PSEUDO_MRG32K3A
MCRAND_RNG_PSEUDO_MTGP32
MCRAND_RNG_PSEUDO_MT19937
MCRAND_RNG_PSEUDO_PHILOX4_32_10
MCRAND_RNG_QUASI_DEFAULT
MCRAND_RNG_QUASI_SOBOL32
当rng_type为MCRAND_RNG_PSEUDO_DEFAULT时,选择的类型为MCRAND_RNG_PSEUDO_XORWOW。当rng_type为MCRAND_RNG_QUASI_DEFAULT时,选择的类型为MCRAND_RNG_QUASI_SOBOL32。
rng_type = MCRAND_RNG_PSEUDO_XORWOW的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MRG32K3A的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MTGP32的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_MT19937的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_PSEUDO_PHILOX4_32_10的默认值为:
seed = 0
offset = 0
ordering = MCRAND_ORDERING_PSEUDO_DEFAULT
rng_type = MCRAND_RNG_QUASI_SOBOL32的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SOBOL64的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SCRAMBLED_SOBOL32的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
rng_type = MCRAND_RNG_QUASI_SCRAMBLED_SOBOL64的默认值为:
dimensions = 1
offset = 0
ordering = MCRAND_ORDERING_QUASI_DEFAULT
mcrandStatus_t MCRANDAPI mcrandCreatePoissonDistribution ( double lambda, mcrandDiscreteDistribution_t* discrete_distribution )
构建泊松分布的直方图数组。
参数
lambda
泊松分布的lambda
discrete_distribution
指向设备内存中直方图的指针
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果GPU不支持双精度浮点数,则返回MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED
如果GPU设置有问题,则返回MCRAND_STATUS_INITIALIZATION_FAILED
如果分布指针为null,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果lambda非正或大于400,000,则返回MCRAND_STATUS_OUT_OF_RANGE
如果直方图生成成功,则返回MCRAND_STATUS_SUCCESS
描述
构造泊松分布的直方图数组,lambda的值为lambda。如果lambda大于2000,则使用近似的正态分布。
mcrandStatus_t MCRANDAPI mcrandDestroyDistribution ( mcrandDiscreteDistribution_t discrete_distribution )
销毁离散分布(例如泊松分布)的直方图数组。
参数
discrete_distribution
指向存储直方图的设备内存的指针
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果直方图销毁成功,则返回MCRAND_STATUS_SUCCESS
描述
销毁由mcrandCreatePoissonDistribution创建的离散分布的直方图数组。
mcrandStatus_t MCRANDAPI mcrandDestroyGenerator ( mcrandGenerator_t generator )
销毁一个现有的生成器。
参数
generator
待销毁的生成器
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果直方图销毁成功,则返回MCRAND_STATUS_SUCCESS
描述
销毁现有生成器并释放与其状态相关的所有内存。
mcrandStatus_t MCRANDAPI mcrandGenerate ( mcrandGenerator_t generator, unsigned int* outputPtr, size_t num )
生成32位伪随机数或准随机数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
num
生成的32位随机值的个数
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果输出样本的数量不是准随机维数的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果生成器是64位的准随机生成器(使用64位准随机生成器的mcrandGenerateLongLong()),则返回MCRAND_STATUS_TYPE_ERROR
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator在outputPtr的设备内存中生成num个32位随机数。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是32位值,每一位都是随机的。
mcrandStatus_t MCRANDAPI mcrandGenerateLogNormal ( mcrandGenerator_t generator, float* outputPtr, size_t n, float mean, float stddev )
生成对数正态分布的浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
n
要生成的浮点数个数
mean
正态分布的均值
stddev
正态分布的标准差
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数或不是伪随机生成器的2的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator将n个浮点数结果生成到设备内存的outputPtr位置。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是32位浮点值,其平均值为mean,标准偏差为stddev。
通常,使用伪随机数生成器和Box-Muller变换来生成正态分布的结果,因此要求n为偶数。准随机生成器使用逆累积分布函数来保持维数。生成的正态分布结果会转换为对数正态分布。
使用mcrandCreateGenerator()创建的生成器在GPU上生成的结果与使用mcrandCreateGeneratorHost()创建的生成器在CPU上计算的结果之间可能会有轻微的数值差异。这些差异是由于超越函数计算结果的差异造成的。此外,未来版本的MCRAND可能会使用更新版本的MXMACA math库,因此不同版本的MCRAND可能会给出略有不同的数值。
mcrandStatus_t MCRANDAPI mcrandGenerateLogNormalDouble ( mcrandGenerator_t generator, double* outputPtr, size_t n, double mean, double stddev )
生成对数正态分布的双精度浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的随机数,或者指向主机内存的指针,用于存储CPU生成的随机数
n
要生成的双精度浮点数个数
mean
正态分布的平均值
stddev
正态分布的标准差
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数或不是伪随机生成器的2的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果GPU不支持双精度浮点数,则返回MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator将n个浮点数结果生成到设备内存的outputPtr位置。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是64位浮点值,其平均值为mean,标准偏差为stddev。
通常,使用伪随机数生成器和Box-Muller变换来生成正态分布的结果,因此要求n为偶数。准随机生成器使用逆累积分布函数来保持维数。生成的正态分布结果会转换为对数正态分布。
使用mcrandCreateGenerator()创建的生成器在GPU上生成的结果与使用mcrandCreateGeneratorHost()创建的生成器在CPU上计算的结果之间可能会有轻微的数值差异。这些差异是由于超越函数计算结果的差异造成的。此外,未来版本的MCRAND可能会使用更新版本的MXMACA math库,因此不同版本的MCRAND可能会给出略有不同的数值。
mcrandStatus_t MCRANDAPI mcrandGenerateLongLong ( mcrandGenerator_t generator, unsigned long long* outputPtr, size_t num )
生成64位的准随机数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
num
要生成的随机64位值的个数
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果输出样本的数量不是准随机维数的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果生成器不是64位的准随机生成器,则返回MCRAND_STATUS_TYPE_ERROR
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator在outputPtr的设备内存中生成num个64位的结果。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是64位值,每个位都是随机的。
mcrandStatus_t MCRANDAPI mcrandGenerateNormal ( mcrandGenerator_t generator, float* outputPtr, size_t n, float mean, float stddev )
生成正态分布的双精度浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
n
要生成的浮点数个数
mean
正态分布的平均值
stddev
正态分布的标准差
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数或不是伪随机生成器的2的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator将n个浮点数结果生成到设备内存的outputPtr位置。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
随机数是32位浮点值,其平均值为mean,标准偏差为stddev。
通常,使用伪随机数生成器和Box-Muller变换来生成正态分布的结果,因此要求n为偶数。准随机生成器使用逆累积分布函数来保持维数。
使用mcrandCreateGenerator()创建的生成器在GPU上生成的结果与使用mcrandCreateGeneratorHost()创建的生成器在CPU上计算的结果之间可能会有轻微的数值差异。这些差异是由于超越函数计算结果的差异造成的。此外,未来版本的MCRAND可能会使用更新版本的MXMACA math库,因此不同版本的MCRAND可能会给出略有不同的数值。
mcrandStatus_t MCRANDAPI mcrandGenerateNormalDouble ( mcrandGenerator_t generator, double* outputPtr, size_t n, double mean, double stddev )
生成正态分布的双精度浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
n
要生成的双精度浮点数个数
mean
正态分布的平均值
stddev
正态分布的标准差
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数或不是伪随机生成器的2的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果GPU不支持双精度浮点数,则返回MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator将n个浮点数结果生成到设备内存的outputPtr位置。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
随机数是64位浮点值,其平均值为mean,标准偏差为stddev。
通常,使用伪随机数生成器和Box-Muller变换来生成正态分布的结果,因此要求n为偶数。准随机生成器使用逆累积分布函数来保持维数。
使用mcrandCreateGenerator()创建的生成器在GPU上生成的结果与使用mcrandCreateGeneratorHost()创建的生成器在CPU上计算的结果之间可能会有轻微的数值差异。这些差异是由于超越函数计算结果的差异造成的。此外,未来版本的MCRAND可能会使用更新版本的MXMACA math库,因此不同版本的MCRAND可能会给出略有不同的数值。
mcrandStatus_t MCRANDAPI mcrandGeneratePoisson ( mcrandGenerator_t generator, unsigned int* outputPtr, size_t n, double lambda )
生成泊松分布的无符号整型数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
n
要生成的无符号整型数个数
lambda
泊松分布的lambda
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果GPU或sm不支持双精度浮点数,则返回MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED
如果lambda非正或大于400,000,则返回MCRAND_STATUS_OUT_OF_RANGE
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator在outputPtr的设备内存中生成n个无符号整型结果。设备内存必须是预先分配的,并且必须足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是泊松分布的32位无符号整型点值,使用lambda表达式。
mcrandStatus_t MCRANDAPI mcrandGenerateSeeds ( mcrandGenerator_t generator )
设置启动状态。
参数
generator
要更新的生成器
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果种子成功生成,则返回MCRAND_STATUS_SUCCESS
描述
生成生成器的启动状态。该函数由生成函数自动调用,如mcrandGenerate()和mcrandGenerateUniform()。出于性能测试的目的,可以手动调用它来分离起始状态生成的时间和随机数生成的时间。
mcrandStatus_t MCRANDAPI mcrandGenerateUniform ( mcrandGenerator_t generator, float* outputPtr, size_t num )
生成均匀分布的浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
num
要生成的浮点数个数
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator在outputPtr的设备内存中生成num个浮点数结果。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是介于0.0f和1.0f之间的32位浮点值,包括1.0f但不包括0.0f。
mcrandStatus_t MCRANDAPI mcrandGenerateUniformDouble ( mcrandGenerator_t generator, double* outputPtr, size_t num )
生成均匀分布的双精度浮点数。
参数
generator
可用的生成器
outputPtr
指向设备内存的指针,用于存储MXMACA生成的结果,或者指向主机内存的指针,用于存储CPU生成的结果
num
要生成的双精度浮点数个数
返回值
如果无法分配内存,则返回MCRAND_STATUS_ALLOCATION_FAILED
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果先前的内核启动存在错误,则返回MCRAND_STATUS_PREEXISTING_FAILURE
如果内核因某种原因启动失败,则返回MCRAND_STATUS_LAUNCH_FAILURE
如果输出样本的数量不是准随机维数的倍数,则返回MCRAND_STATUS_LENGTH_NOT_MULTIPLE
如果GPU不支持双精度浮点数,则返回MCRAND_STATUS_DOUBLE_PRECISION_REQUIRED
如果成功生成,则返回MCRAND_STATUS_SUCCESS
描述
使用generator在outputPtr的设备内存中生成num个双精度浮点数结果。设备内存必须是预先分配的,并且足够大以容纳所有结果。启动是使用mcrandSetStream()设置的流完成的,如果没有设置流,则为空流。
结果是介于0.0和1.0之间的64位双精度浮点值,包括1.0但不包括0.0。
mcrandStatus_t MCRANDAPI mcrandGetDirectionVectors32 ( mcrandDirectionVectors32_t* vectors, mcrandDirectionVectorSet_t set )
获得用于生成32位准随机数的方向向量。
参数
vectors
返回方向向量的指针地址
set
一组选用的方向向量
返回值
如果选择的集合无效,则返回MCRAND_STATUS_OUT_OF_RANGE
如果指针设置成功,则返回MCRAND_STATUS_SUCCESS
描述
获取指向可用于准随机数生成的方向向量数组的指针。随机数指针将引用主机内存中的方向向量数组。
该数组包含多个维度的向量。每个维度有32个向量。每个单独的向量都是一个无符号整型。
set的合法值为:
MCRAND_DIRECTION_VECTORS_32_JOEKUO6 (20000维度)
MCRAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6 (20000维度)
mcrandStatus_t MCRANDAPI mcrandGetDirectionVectors64 ( mcrandDirectionVectors64_t* vectors, mcrandDirectionVectorSet_t set )
获得用于生成64位准随机数的方向向量。
参数
vectors
返回方向向量的指针地址
set
一组选用的方向向量
返回值
如果选择的集合无效,则返回MCRAND_STATUS_OUT_OF_RANGE
如果指针设置成功,则返回MCRAND_STATUS_SUCCESS
描述
获取指向可用于准随机数生成的方向向量数组的指针。随机数指针将引用主机内存中的方向向量数组。
该数组包含多个维度的向量。每个维度有64个向量。每个单独的向量都是一个无符号双长整型。
set的合法值为:
MCRAND_DIRECTION_VECTORS_64_JOEKUO6 (20000维度)
MCRAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6 (20000维度)
mcrandStatus_t MCRANDAPI mcrandGetProperty ( libraryPropertyType type, int* value )
返回mcrand属性的值。
参数
type
MXMACA 库属性
value
请求的属性的整数值
返回值
如果属性值已成功返回,则返回MCRAND_STATUS_SUCCESS
如果无法识别属性类型,则返回MCRAND_STATUS_OUT_OF_RANGE
描述
在 value 中返回由动态链接的MCRAND库的类型描述的属性数字。
mcrandStatus_t MCRANDAPI mcrandGetScrambleConstants32 ( unsigned int** constants )
获取32位Scrambled Sobol序列的Scramble常数。
参数
constants
返回Scramble常数的指针地址
返回值
如果指针设置成功,则返回MCRAND_STATUS_SUCCESS
描述
获取指向可用于生成准随机数的Scramble常数数组的指针。所得到的指针将引用位于主机内存中的无符号整型数组。
该数组包含多个维度的常量。每个维度都有一个无符号整型常量。
mcrandStatus_t MCRANDAPI mcrandGetScrambleConstants64 ( unsigned long long** constants )
获得64位Scrambled Sobol序列的Scramble常数。
参数
constants
返回Scramble常数的指针地址
返回值
如果指针设置成功,则返回MCRAND_STATUS_SUCCESS
描述
获取指向可用于生成准随机数的Scramble常数数组的指针。所得到的指针将引用位于主机内存中的无符号双长整型数组。
该数组包含多个维度的常量。每个维度都有一个无符号双长整型常量。
mcrandStatus_t MCRANDAPI mcrandGetVersion ( int* version )
返回库的版本号。
参数
version
MCRAND 库的版本号
返回值
如果版本号成功返回,则返回MCRAND_STATUS_SUCCESS
描述
在*version中返回动态链接的mcRAND库的版本号。格式与MXMACA Runtime中的MACART_VERSION相同。唯一支持的配置是与MXMACA Runtime版本相同的MCRAND版本。
mcrandStatus_t MCRANDAPI mcrandSetGeneratorOffset ( mcrandGenerator_t generator, unsigned long long offset )
设置伪随机数或准随机数生成器的绝对偏移量。
参数
generator
待修改的生成器
offset
绝对偏移位置
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果生成器偏移量设置成功,则返回MCRAND_STATUS_SUCCESS
描述
设置伪随机数或准随机数生成器的绝对偏移量。
所有的offset值都是有效的。偏移位置是绝对的,而不是相对于序列中的当前位置。
mcrandStatus_t MCRANDAPI mcrandSetGeneratorOrdering ( mcrandGenerator_t generator, mcrandOrdering_t order )
设置伪随机数或准随机数生成器的随机数排序。
参数
generator
待修改的生成器
order
结果的排序
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果排序无效,则返回MCRAND_STATUS_OUT_OF_RANGE
如果生成器顺序设置成功,则返回MCRAND_STATUS_SUCCESS
描述
设置伪随机或准随机数生成器的结果排序方式。
伪随机数生成器的合法排序值为:
MCRAND_ORDERING_PSEUDO_DEFAULT
MCRAND_ORDERING_PSEUDO_BEST
MCRAND_ORDERING_PSEUDO_SEEDED
MCRAND_ORDERING_PSEUDO_LEGACY
准随机数生成器的合法排序值为:
MCRAND_ORDERING_QUASI_DEFAULT
mcrandStatus_t MCRANDAPI mcrandSetPseudoRandomGeneratorSeed ( mcrandGenerator_t generator, unsigned long long seed )
设置伪随机数生成器的种子值。
参数
generator
待修改的生成器
seed
种子值
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果排序无效,则返回MCRAND_STATUS_OUT_OF_RANGE
如果生成器顺序设置成功,则返回MCRAND_STATUS_SUCCESS
描述
设置伪随机数生成器的种子值。 所有的种子值都是有效的。 不同的种子将产生不同的序列。 不同的种子之间往往不具有统计相关性,但某些种子对的值可能生成具有统计相关性的序列。
mcrandStatus_t MCRANDAPI mcrandSetQuasiRandomGeneratorDimensions ( mcrandGenerator_t generator, unsigned int num_dimensions )
设置维度数量。
参数
generator
待修改的生成器
num_dimensions
维度数量
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果num_dimensions无效,则返回MCRAND_STATUS_OUT_OF_RANGE
如果生成器不是准随机数生成器,则返回MCRAND_STATUS_TYPE_ERROR
如果生成器顺序设置成功,MCRAND_STATUS_SUCCESS
描述
设置准随机数生成器生成的维度数量。
合法的num_dimensions值为1 ~ 20000。
mcrandStatus_t MCRANDAPI mcrandSetStream ( mcrandGenerator_t generator, mcStream_t stream )
为MCRAND内核启动设置当前流。
参数
generator
待修改的生成器
stream
要使用的数据流,空数据流则为 NULL
返回值
如果生成器未创建,则返回MCRAND_STATUS_NOT_INITIALIZED
如果流设置成功,则返回MCRAND_STATUS_SUCCESS
描述
为 MCRAND 内核启动设置当前数据流。在重新设置之前,所有库函数都将使用该数据流。
4.2. 设备API
4.2.1. 命名空间
命名空间mcrand_detail
4.2.2. 函数列表
__device__ unsigned int mcrand ( mcrandStateMtgp32_t* state )
从mtgp32生成器中返回32位的伪随机数。
__device__ unsigned long long mcrand ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器中返回64位的准随机数。
__device__ unsigned long long mcrand ( mcrandStateSobol64_t* state )
从Sobol64生成器中返回64位准随机数。
__device__ unsigned int mcrand ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器中返回32位的准随机数。
__device__ unsigned int mcrand ( mcrandStateSobol32_t* state )
从Sobol32生成器中返回32位的准随机数。
__device__ unsigned int mcrand ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回32位的伪随机数。
__device__ unsigned int mcrand ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回32位的伪随机数。
__device__ unsigned int mcrand ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回32位的伪随机数。
__device__ uint4 mcrand4 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回一个包含四个32位伪随机数的元组。
__host__ __forceinline__ mcrandStatus_t mcrandMakeMTGP32Constants ( const mtgp32_params_fast_t params[], mtgp32_kernel_params_t* p )
设置mtgp32生成器的常数参数
__host__ __forceinline__ mcrandStatus_t MCRANDAPI mcrandMakeMTGP32KernelState ( mcrandStateMtgp32_t* s, mtgp32_params_fast_t params[], mtgp32_kernel_params_t* k, int n, unsigned long long seed )
设置mtgp32生成器的初始状态
__device__ void mcrand_init ( mcrandDirectionVectors64_t direction_vectors, unsigned long long scramble_c, unsigned long long offset, mcrandStateScrambledSobol64_t* state )
初始化Scrambled Sobol64生成器的状态
__device__ void mcrand_init ( mcrandDirectionVectors64_t direction_vectors, unsigned long long offset, mcrandStateSobol64_t* state )
初始化Sobol64生成器的状态
__device__ void mcrand_init ( mcrandDirectionVectors32_t direction_vectors, unsigned int scramble_c, unsigned int offset, mcrandStateScrambledSobol32_t* state )
初始化Scrambled Sobol32生成器的状态
__device__ void mcrand_init ( mcrandDirectionVectors32_t direction_vectors, unsigned int offset, mcrandStateSobol32_t* state )
初始化Sobol32生成器的状态
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStateMRG32k3a_t* state )
初始化MRG32k3a生成器的状态
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStatePhilox4_32_10_t* state )
初始化Philox4_32_10生成器的状态
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStateXORWOW_t* state )
初始化XORWOW生成器的状态
__device__ float mcrand_log_normal ( mcrandStateScrambledSobol64_t* state, float mean, float stddev )
从Scrambled Sobol64生成器中返回一个对数正态分布的浮点数
__device__ float mcrand_log_normal ( mcrandStateSobol64_t* state, float mean, float stddev )
从Sobol64生成器返回一个对数正态分布的浮点数。
__device__ float mcrand_log_normal ( mcrandStateScrambledSobol32_t* state, float mean, float stddev )
从Scrambled Sobol32生成器返回一个对数正态分布的浮点数。
__device__ float mcrand_log_normal ( mcrandStateSobol32_t* state, float mean, float stddev )
从Sobol32生成器返回一个对数正态分布的浮点数。
__device__ float mcrand_log_normal ( mcrandStateMtgp32_t* state, float mean, float stddev )
从MTGP32生成器中返回一个对数正态分布的浮点数
__device__ float mcrand_log_normal ( mcrandStateMRG32k3a_t* state, float mean, float stddev )
从MRG32k3a生成器中返回一个对数正态分布的浮点数
__device__ float mcrand_log_normal ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从Philox4_32_10生成器中返回一个对数正态分布的浮点数
__device__ float mcrand_log_normal ( mcrandStateXORWOW_t* state, float mean, float stddev )
从XORWOW生成器返回一个对数正态分布的浮点数。
__device__ float2 mcrand_log_normal2 ( mcrandStateMRG32k3a_t* state, float mean, float stddev )
从MRG32k3a生成器返回两个正态分布的浮点数。
__device__ float2 mcrand_log_normal2 ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从Philox4_32_10生成器中返回两个正态分布的浮点数
__device__ float2 mcrand_log_normal2 ( mcrandStateXORWOW_t* state, float mean, float stddev )
从XORWOW生成器中返回两个正态分布的浮点数
__device__ double2 mcrand_log_normal2_double ( mcrandStateMRG32k3a_t* state, double mean, double stddev )
从MRG32k3a生成器返回两个对数正态分布的双精度浮点数。
__device__ double2 mcrand_log_normal2_double ( mcrandStatePhilox4_32_10_t* state, double mean, double stddev )
从Philox4_32_10生成器返回两个对数正态分布的双精度浮点数。
__device__ double2 mcrand_log_normal2_double ( mcrandStateXORWOW_t* state, double mean, double stddev )
从XORWOW生成器返回两个对数正态分布的双精度浮点数。
__device__ float4 mcrand_log_normal4 ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从Philox4_32_10生成器返回四个正态分布的浮点数
__device__ double mcrand_log_normal_double ( mcrandStateScrambledSobol64_t* state, double mean, double stddev )
从Scrambled Sobol64生成器返回一个对数正态分布的双精度浮点数
__device__ double mcrand_log_normal_double ( mcrandStateSobol64_t* state, double mean, double stddev )
从Sobol64生成器返回一个对数正态分布的双精度浮点数
__device__ double mcrand_log_normal_double ( mcrandStateScrambledSobol32_t* state, double mean, double stddev )
从Scrambled Sobol32生成器返回一个对数正态分布的双精度浮点数。
__device__ double mcrand_log_normal_double ( mcrandStateSobol32_t* state, double mean, double stddev )
从Sobol32生成器返回一个对数正态分布的双精度浮点数。
__device__ double mcrand_log_normal_double ( mcrandStateMtgp32_t* state, double mean, double stddev )
从MTGP32生成器返回一个对数正态分布的双精度浮点数。
__device__ double mcrand_log_normal_double ( mcrandStateMRG32k3a_t* state, double mean, double stddev )
从MRG32k3a生成器返回一个对数正态分布的双精度浮点数。
__device__ double mcrand_log_normal_double ( mcrandStatePhilox4_32_10_t* state, double mean, double stddev )
从Philox4_32_10生成器返回一个对数正态分布的双精度浮点数。
__device__ double mcrand_log_normal_double ( mcrandStateXORWOW_t* state, double mean, double stddev )
从XORWOW生成器返回一个对数正态分布的双精度浮点数。
__device__ float mcrand_mtgp32_single ( mcrandStateMtgp32_t* state )
从mtgp32生成器返回一个均匀分布的浮点数。
__device__ float mcrand_mtgp32_single_specific ( mcrandStateMtgp32_t* state, unsigned char index, unsigned char n )
从mtgp32生成器的特定位置返回一个均匀分布的浮点数。
__device__ unsigned int mcrand_mtgp32_specific ( mcrandStateMtgp32_t* state, unsigned char index, unsigned char n )
从mtgp32生成器的特定位置返回一个32位伪随机数。
__device__ float mcrand_normal ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStateSobol64_t* state )
从Sobol64生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStateSobol32_t* state )
从Sobol32生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStateMtgp32_t* state )
从MTGP32生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回一个正态分布的浮点数。
__device__ float mcrand_normal ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回一个正态分布浮点数。
__device__ float mcrand_normal ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回一个正态分布的浮点数。
__device__ float2 mcrand_normal2 ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回两个正态分布的浮点数。
__device__ float2 mcrand_normal2 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回两个正态分布的浮点数。
__device__ float2 mcrand_normal2 ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回两个正态分布的浮点数。
__device__ double2 mcrand_normal2_double ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回两个正态分布的双精度浮点数。
__device__ double2 mcrand_normal2_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回两个正态分布的双精度浮点数。
__device__ double2 mcrand_normal2_double ( mcrandStateXORWOW_t* state )
从XORWOW生成器中返回两个正态分布的双精度浮点数。
__device__ float4 mcrand_normal4 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回4个正态分布的浮点数。
__device__ double mcrand_normal_double ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateSobol64_t* state )
从Sobol64生成器返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateSobol32_t* state )
从Sobol32生成器返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateMtgp32_t* state )
从MTGP32生成器中返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器中返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器中返回一个正态分布的双精度浮点数。
__device__ double mcrand_normal_double ( mcrandStateXORWOW_t* state )
从XORWOW生成器中返回一个正态分布的双精度浮点数。
__device__ unsigned int mcrand_poisson ( mcrandStateScrambledSobol64_t* state, double lambda )
从Scrambled Sobol64生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateSobol64_t* state, double lambda )
从Sobol64生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateScrambledSobol32_t* state, double lambda )
从Scrambled Sobol32生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateSobol32_t* state, double lambda )
从Sobol32生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateMtgp32_t* state, double lambda )
从MTGP32生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateMRG32k3a_t* state, double lambda )
从MRG32k3A生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStatePhilox4_32_10_t* state, double lambda )
从Philox4_32_10生成器中返回一个泊松分布的无符号整数。
__device__ unsigned int mcrand_poisson ( mcrandStateXORWOW_t* state, double lambda )
从XORWOW生成器中返回一个泊松分布的无符号整数。
__device__ uint4 mcrand_poisson4 ( mcrandStatePhilox4_32_10_t* state, double lambda )
从Philox4_32_10生成器中返回四个泊松分布的无符号整数。
__device__ float mcrand_uniform ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateSobol64_t* state )
从Sobol64生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateSobol32_t* state )
从Sobol32生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateMtgp32_t* state )
从MTGP32生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器中返回一个均匀分布的浮点数。
__device__ float mcrand_uniform ( mcrandStateXORWOW_t* state )
从XORWOW生成器中返回一个均匀分布的浮点数。
__device__ double2 mcrand_uniform2_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器中返回一个均匀分布的元组,其中包含两个双精度浮点数。
__device__ float4 mcrand_uniform4 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器中返回一个均匀分布的元组,包含四个浮点数。
__device__ double mcrand_uniform_double ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateSobol64_t* state )
从Sobol64生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateSobol32_t* state )
从Sobol32生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateMtgp32_t* state )
从MTGP32生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器中返回一个均匀分布的双精度浮点数。
__device__ double mcrand_uniform_double ( mcrandStateXORWOW_t* state )
从XORWOW生成器中返回一个均匀分布的双精度浮点数。
template < typename T >
__device__ MCRAND_STD::enable_if < MCRAND_STD::is_same < mcrandStateSobol64_t* > ::type skipahead ( unsigned long long n, T state )
更新Sobol64生成器的状态以跳过n个元素。
template < typename T >
__device__ MCRAND_STD::enable_if < MCRAND_STD::is_same < mcrandStateSobol32_t* > ::type skipahead ( unsigned int n, T state )
更新Sobol32生成器的状态以跳过n个元素。
__device__ void skipahead ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新MRG32k3a生成器的状态以跳过n个元素。
__device__ void skipahead ( unsigned long long n, mcrandStatePhilox4_32_10_t* state )
更新Philox4_32_10生成器的状态以跳过n个元素。
__device__ void skipahead ( unsigned long long n, mcrandStateXORWOW_t* state )
更新XORWOW生成器的状态以跳过n个元素。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新MRG32k3a生成器的状态以跳过n个序列。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStatePhilox4_32_10_t* state )
更新Philox4_32_10生成器的状态以跳过n个序列。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStateXORWOW_t* state )
更新XORWOW生成器的状态以跳过n个序列。
__device__ void skipahead_subsequence ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新MRG32k3a生成器的状态以跳过n个序列。
4.2.3. 函数
__device__ unsigned int mcrand ( mcrandStateMtgp32_t* state )
从mtgp32生成器返回32位伪随机数。
参数
state
指向要更新状态的指针。
返回值
32位伪随机数作为无符号整数返回,所有位均有效。
描述
从state状态的MTGP32生成器中返回32位伪随机数,生成器的位置按块中的线程数递增。注意,块中的线程数不能超过 256。
__device__ unsigned long long mcrand ( mcrandStateScrambledSobol64_t* state )
从Sobol64生成器返回64位伪随机数。
参数
state
指向要更新状态的指针
返回值
64位准随机数作为无符号双长整型返回,所有位均有效。
描述
从state状态的Scrambled Sobol32生成器中返回64位准随机数,生成器的位置递增一位。
__device__ unsigned long long mcrand ( mcrandStateSobol64_t* state )
从Sobol64生成器返回64位伪随机数。
参数
state
指向要更新状态的指针
返回值
64位准随机数作为无符号长整型返回,所有位均有效。
描述
从state状态的Sobol64生成器中返回64位准随机数,生成器的位置递增一位。
__device__ unsigned int mcrand ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器返回32位伪随机数。
参数
state
指向要更新状态的指针
返回值
32位准随机数作为无符号整数返回,所有位均有效。
描述
从state状态的Scrambled Sobol32生成器中返回32位准随机数,生成器的位置递增一位。
__device__ unsigned int mcrand ( mcrandStateSobol32_t* state )
从Sobol32生成器返回32位伪随机数。
参数
state
指向要更新状态的指针
返回值
32位准随机数作为无符号整数返回,所有位均有效。
描述
从state状态的Sobol32生成器中返回32位准随机数,生成器的位置递增一位。
__device__ unsigned int mcrand ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回32位伪随机数。
参数
state
指向要更新状态的指针
返回值
32位伪随机数作为无符号整数返回,所有位均有效。
描述
从state状态的 MRG32k3a 生成器中返回32位伪随机数,生成器的位置递增一位。
__device__ unsigned int mcrand ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回32位伪随机数。
参数
state
指向要更新状态的指针
返回值
32位伪随机数作为无符号整数返回,所有位均有效。
描述
从state状态的 Philox4_32_10 生成器中返回32位伪随机数,生成器的位置递增一位。
__device__ unsigned int mcrand ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回32位伪随机数。
参数
state
指向要更新状态的指针
返回值
32位伪随机数作为无符号整数返回,所有位均有效。
描述
从state状态的 XORWOW 生成器返回32位伪随机数,生成器的位置递增一位。
__device__ uint4 mcrand4 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回4个32位伪随机数的元组。
参数
state
指向要更新状态的指针
返回值
128位伪随机数作为uint4返回,所有位均有效。
描述
从state状态的Philox4_32_10生成器中返回128位伪随机数,生成器的位置递增四位。
__host__ __forceinline__ mcrandStatus_t mcrandMakeMTGP32Constants ( const mtgp32_params_fast_t params[], mtgp32_kernel_params_t* p )
为 MTGP32 生成器设置常量参数。
参数
params
指向主机内存中mtgp32_params_fast_t类型的数组的指针。
p
指向设备内存中为mtgp32_kernel_params_t的结构体的指针。
返回值
如果主机内存无法分配,则返回MCRAND_STATUS_ALLOCATION_FAILED;
如果复制到设备内存时失败,则返回MCRAND_STATUS_INITIALIZATION_FAILED;
否则返回MCRAND_STATUS_SUCCESS。
描述
这个主机端辅助函数重新组织了 MCRAND_NUM_MTGP32_PARAMS 组生成器参数,供内核函数使用,并将结果复制到设备内存中的指定位置。
__host__ __forceinline__ mcrandStatus_t MCRANDAPI mcrandMakeMTGP32KernelState ( mcrandStateMtgp32_t* s, mtgp32_params_fast_t params[], mtgp32_kernel_params_t* k, int n, unsigned long long seed )
为 mtgp32 生成器设置初始状态。
参数
s
指向设备内存中状态数组的指针
params
指向主机内存中mtgp32_params_fast_t类型的数组的指针
k
指向设备内存中mtgp32_kernel_params_t类型的结构体的指针
n
要初始化的参数集/状态的数量。
seed
种子值
返回值
如果主机内存状态无法分配,则返回MCRAND_STATUS_ALLOCATION_FAILED;
如果复制到设备内存时失败,则返回MCRAND_STATUS_INITIALIZATION_FAILED;
否则返回MCRAND_STATUS_SUCCESS。
描述
这个主机端的辅助函数用于初始化MTGP32生成器的多个状态(每个状态对应一个参数集)。为了实现这一点,它在主机内存中分配了一个状态数组,然后初始化该数组,并将结果复制到设备内存。
__device__ void mcrand_init ( mcrandDirectionVectors64_t direction_vectors, unsigned long long scramble_c, unsigned long long offset, mcrandStateScrambledSobol64_t* state )
初始化Scrambled Sobol64生成器的状态。
参数
direction_vectors
指向64个无符号双长整型数组的指针,这些长度表示所需维度的方向向量
scramble_c
用于Scrambled Sobol64序列的常量
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的方向向量和偏移量初始化处于state中的 Sobol64 状态。
方向向量是一个指向64个无符号双长整型数组的设备指针。任意输入的偏移量值都是合法的。
__device__ void mcrand_init ( mcrandDirectionVectors64_t direction_vectors, unsigned long long offset, mcrandStateSobol64_t* state )
初始化 Sobol64 状态。
参数
direction_vectors
指向64个无符号双长整型的数组的指针。这些长度表示所需维度的方向向量。
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的方向向量和偏移量初始化处于state中的 Sobol64 状态。
方向向量是一个指向64个无符号双长整型数组的设备指针。任意输入的偏移量值都是合法的。
__device__ void mcrand_init ( mcrandDirectionVectors32_t direction_vectors, unsigned int scramble_c, unsigned int offset, mcrandStateScrambledSobol32_t* state )
初始化Scrambled Sobol32生成器的状态
参数
direction_vectors
指向表示所需维度的方向向量的32个无符号整型数组的指针
scramble_c
用于Scrambled Sobol32序列的常量
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的方向向量和偏移量初始化处于state中的 Sobol32 状态。
方向向量是一个指向64个无符号双长整型数组的设备指针。任意输入的偏移量值都是合法的。
__device__ void mcrand_init ( mcrandDirectionVectors32_t direction_vectors, unsigned int offset, mcrandStateSobol32_t* state )
初始化 Sobol32 状态。
参数
direction_vectors
指向表示所需维度的方向向量的32个无符号整数的数组的指针
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的方向向量和偏移量初始化处于state中的 Sobol32 状态。
方向向量是一个指向64个无符号双长整型数组的设备指针。任意输入的偏移量值都是合法的。
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStateMRG32k3a_t* state )
初始化 MRG32k3a 状态。
参数
seed
用作种子的任意位
subsequence
开始的子序列
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的种子、子序列和偏移量初始化处于state中的 MRG32k3a 的状态。
种子、子序列和偏移量的所有输入值都是合法的。将子序列截断为51位以避免进入下一个序列。
种子值为 0 时,则将状态设置为 MRG32k3a 算法原始发布版本的值。
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStatePhilox4_32_10_t* state )
初始化 Philox4_32_10 状态。
参数
seed
用作种子的任意位
subsequence
开始的子序列
offset
进入子序列的绝对偏移量
state
要初始化的状态指针
描述
使用给定的种子、 p子序列和偏移量初始化处于state中的 Philox4_32_10状态。
种子、子序列和偏移量的所有输入值都是合法的。种子的264个可能值中的每一个都选择一个长度为2130的独立序列。序列的前266 * subsequence + offset.个值被跳过。也就是说,子序列的长度为266。
__device__ void mcrand_init ( unsigned long long seed, unsigned long long subsequence, unsigned long long offset, mcrandStateXORWOW_t* state )
初始化 XORWOW 状态。
参数
seed
用作种子的任意位
subsequence
开始的子序列
offset
按顺序绝对偏移量
state
要初始化的状态指针
描述
使用给定的种子、子序列和偏移量初始化处于state中的 XORWOW 状态。
输入任意种子、子序列以及偏移量的值都是合法的。子序列和偏移值越大,需要的计算量就越大,因此完成时间也就越长。
如果种子值为0,则将状态设置为原始发布的 xorwow 算法的值。
__device__ float mcrand_log_normal ( mcrandStateScrambledSobol64_t* state, float mean, float stddev )
从Scrambled Sobol64 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的Scrambled Sobol64 生成器中返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
实现使用分位函数生成正态分布的结果,然后将结果转换为对数正态分布。
__device__ float mcrand_log_normal ( mcrandStateSobol64_t* state, float mean, float stddev )
从 Sobol64 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 Sobol64 生成器中返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
实现使用分位函数生成正态分布的结果,然后将结果转换为对数正态分布。
__device__ float mcrand_log_normal ( mcrandStateScrambledSobol32_t* state, float mean, float stddev )
从Scrambled Sobol32 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的Scrambled Sobol32 生成器返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
该实现使用分位函数生成一个正态分布的结果,然后将结果转换为对数正态分布。
__device__ float mcrand_log_normal ( mcrandStateSobol32_t* state, float mean, float stddev )
从 Sobol32 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 Sobol32 生成器返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
该实现使用分位函数生成一个正态分布的结果,然后将结果转换为对数正态分布。
__device__ float mcrand_log_normal ( mcrandStateMtgp32_t* state, float mean, float stddev )
从 MTGP32 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 MTGP32 生成器返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
该实现使用分位函数生成一个正态分布的结果,然后将结果转换为对数正态分布。
__device__ float mcrand_log_normal ( mcrandStateMRG32k3a_t* state, float mean, float stddev )
从 MRG32k3a 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 MRG32k3a 生成器返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
实现过程中使用了 Box-Muller 变换生成的两个正态分布结果,将它们转换为对数正态分布,然后一次返回一个。有关一次返回两个结果的更高效的版本,请参见 mcrand_log_normal2()。
__device__ float mcrand_log_normal ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从 Philox4_32_1 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 Philox4_32_1 生成器中返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
实现过程使用了 Box-Muller 变换生成的两个正态分布结果,将它们转换为对数正态分布,然后一次返回一个。有关一次返回两个结果的更高效的版本,请参见 mcrand_log_normal2()。
__device__ float mcrand_log_normal ( mcrandStateXORWOW_t* state, float mean, float stddev )
从 XORWOW 生成器返回一个对数正态分布的浮点数。
参数
state
要更新的状态指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布浮点数
描述
从state状态的 XORWOW 生成器中返回一个从正态分布派生,均值为mean,标准差为stddev的对数正态分布浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,将它们转换为对数正态分布,并逐个返回。 如果希望以更高效的方式同时返回两个结果,请参见 mcrand_log_normal2() 函数。
__device__ float2 mcrand_log_normal2 ( mcrandStateMRG32k3a_t* state, float mean, float stddev )
从 MRG32k3a 生成器返回两个正态分布的浮点数。
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布float2
描述
从state状态的MRG32k3a生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ float2 mcrand_log_normal2 ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从Philox4_32_10生成器返回两个正态分布的浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布float2
描述
从state状态的Philox4_32_10生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ float2 mcrand_log_normal2 ( mcrandStateXORWOW_t* state, float mean, float stddev )
从XORWOW生成器返回两个正态分布的浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布
描述
从state状态的XORWOW生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ double2 mcrand_log_normal2_double ( mcrandStateMRG32k3a_t* state, double mean, double stddev )
从MRG32k3a生成器返回两个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布double2
描述
从state状态的MRG32k3a生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布双精度数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ double2 mcrand_log_normal2_double ( mcrandStatePhilox4_32_10_t* state, double mean, double stddev )
从Philox4_32_10生成器返回两个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布double2
描述
从state状态的Philox4_32_10生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布双精度数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ double2 mcrand_log_normal2_double ( mcrandStateXORWOW_t* state, double mean, double stddev )
从XORWOW生成器返回两个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布double2
描述
从state状态的XORWOW生成器中返回两个由均值为mean,标准差为stddev的正态分布派生的对数正态分布双精度数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ float4 mcrand_log_normal4 ( mcrandStatePhilox4_32_10_t* state, float mean, float stddev )
从Philox4_32_10生成器返回4个正态分布的浮点数。
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
由均值为mean,标准差为stddev的正态分布派生的对数正态分布float4
描述
从state状态的MRG32k3a生成器中四个由均值为mean,标准差为stddev的正态分布派生的对数正态分布浮点数,生成器的位置递增四位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并将其转换为对数正态分布。
__device__ double mcrand_log_normal_double ( mcrandStateScrambledSobol64_t* state, double mean, double stddev )
从Scrambled Sobol64生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的Scrambled Sobol64生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_log_normal_double ( mcrandStateSobol64_t* state, double mean, double stddev )
从Sobol64生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的Sobol64生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_log_normal_double ( mcrandStateScrambledSobol32_t* state, double mean, double stddev )
从Scrambled Sobol32生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的Scrambled Sobol32生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果,并将其转换为对数正态分布。
__device__ double mcrand_log_normal_double ( mcrandStateSobol32_t* state, double mean, double stddev )
从Sobol32生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的Sobol32生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果,并将其转换为对数正态分布。
__device__ double mcrand_log_normal_double ( mcrandStateMtgp32_t* state, double mean, double stddev )
从MTGP32生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的MTGP32生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果,并将其转换为对数正态分布。
__device__ double mcrand_log_normal_double ( mcrandStateMRG32k3a_t* state, double mean, double stddev )
从MRG32k3a生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的MRG32k3a生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,将其转换为对数正态分布,并逐个返回。 如果希望以更高效的方式同时返回两个结果,请参见mcrand_log_normal2_double()函数。
__device__ double mcrand_log_normal_double ( mcrandStatePhilox4_32_10_t* state, double mean, double stddev )
从Philox4_32_10生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的Philox4_32_10生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,将它们转换为对数正态分布,并逐个返回。 如果希望以更高效的方式同时返回两个结果,请参见mcrand_log_normal2_double()函数。
__device__ double mcrand_log_normal_double ( mcrandStateXORWOW_t* state, double mean, double stddev )
从XORWOW生成器返回一个对数正态分布的双精度浮点数
参数
state
指向要更新状态的指针
mean
相关正态分布的均值
stddev
相关正态分布的标准差
返回值
均值为mean,标准差为stddev的对数正态分布双精度浮点数
描述
从state状态的XORWOW生成器中返回一个由均值为mean,标准差为stddev正态分布派生的对数正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,将它们转换为对数正态分布,并逐个返回。 如果希望以更高效的方式同时返回两个结果,请参见mcrand_log_normal2_double()函数。
__device__ float mcrand_mtgp32_single ( mcrandStateMtgp32_t* state )
从mtgp32生成器返回一个均匀分布的浮点数。
参数
state
指向要更新状态的指针
返回值
均匀分布在0.0f到1.0f之间的浮点数
描述
从state状态的mtgp32生成器中返回一个在0.0f和1.0f之间均匀分布的浮点数,生成器的位置递增一位。输出范围不包括0.0f但包括1.0f。不会返回非规格化的浮点数。
注意:提供这种备选的均匀浮点数派生方式是为了与源代码保持完整性。
__device__ float mcrand_mtgp32_single_specific ( mcrandStateMtgp32_t* state, unsigned char index, unsigned char n )
从mtgp32生成器的特定位置返回一个均匀分布的浮点数。
参数
state
指向要更新状态的指针
index
此状态下要提取和更新的位置索引(0..255)
n
此状态下要通过此次调用更新的位置总数
返回值
均匀分布在0.0f到1.0f之间的浮点数
描述
从state状态的mtgp32生成器的位置索引处返回一个在0.0f和1.0f之间均匀分布的浮点数,并将生成器增加n个位置,其中n必须为线程块在此次调用中的状态下更新的位置总数。输出范围不包括0.0f但包括1.0f。不会返回非规格化的浮点数。
备注
线程索引必须在0到n - 1范围内。更新的位置数不能超过256。一个线程块可以更新多个状态,但一个给定状态不能由多个线程块更新。
提供这种备选的均匀浮点数派生方式是为了与源代码保持完整性。
__device__ unsigned int mcrand_mtgp32_specific ( mcrandStateMtgp32_t* state, unsigned char index, unsigned char n )
从mtgp32生成器的特定位置返回32位的伪随机数。
参数
state
指向要更新状态的指针
index
此状态下要提取和更新的位置索引(0..255)
n
此状态下要通过此次调用更新的位置总数
返回值
作为无符号整数的32位伪随机数,所有位都可用。
描述
从state状态的mtgp32生成器的位置索引处返回32位的伪随机数,并将生成器递增n个位置,其中n必须为线程块在此调用中的状态下更新的位置总数。
备注
线程索引必须在0到n - 1范围内。更新的位置数不能超过256。一个线程块可以更新多个状态,但是一个给定的状态不能同时被多个线程块更新。
__device__ float mcrand_normal ( mcrandStateScrambledSobol64_t* state )
从一个Scrambled Sobol64生成器返回一个正态分布的浮点数
参数
state
指向要更新状态的指针
返回值
均值为0.0f,标准差为1.0f的正态分布浮点数
描述
从state状态的Scrambled Sobol64生成器中返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ float mcrand_normal ( mcrandStateSobol64_t* state )
从一个Sobol64生成器返回一个正态分布的浮点数
参数
state
指向要更新状态的指针
返回值
均值为0.0f,标准差为1.0f的正态分布浮点数
描述
从state状态的Sobol64生成器中返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ float mcrand_normal ( mcrandStateScrambledSobol32_t* state )
从一个Scrambled Sobol32生成器返回一个正态分布的浮点数
参数
state
指向要更新状态的指针
返回值
均值为0.0f,标准差为1.0f的正态分布浮点数
描述
从state状态的Scrambled Sobol32生成器中返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ float mcrand_normal ( mcrandStateSobol32_t* state )
从Sobol32生成器返回一个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
平均值为 0.0f,标准差为 1.0f 的正态分布浮点数
描述
从state状态的Sobol32生成器中返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ float mcrand_normal ( mcrandStateMtgp32_t* state )
从MTGP32生成器返回一个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
平均值为 0.0f,标准差为 1.0f 的正态分布浮点数
描述
从state状态的MTGP32生成器返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ float mcrand_normal ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回一个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
平均值为 0.0f,标准差为 1.0f 的正态分布浮点数
描述
从state状态的MRG32k3a生成器返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ float mcrand_normal ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回一个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
平均值为 0.0f,标准差为 1.0f 的正态分布浮点数
描述
从state状态的Philox4_32_10生成器返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ float mcrand_normal ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回一个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
平均值为 0.0f,标准差为 1.0f 的正态分布浮点数
描述
从state状态的XORWOW生成器返回一个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ float2 mcrand_normal2 ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回两个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布的float2类型浮点数,其中每个元素都来自均值为0.0f,标准差为1.0f的分布
描述
从state状态的MRG32k3a生成器返回两个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ float2 mcrand_normal2 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回两个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布float2类型浮点数,其中每个元素都来自均值为0.0f,标准差为1.0f的分布
描述
从state状态的Philox4_32_10生成器返回两个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ float2 mcrand_normal2 ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回两个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布float2类型浮点数,其中每个元素都来自均值为0.0f,标准差为1.0f的分布
描述
从state状态的XORWOW生成器返回两个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ double2 mcrand_normal2_double ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回两个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布double2类型双精度浮点数,其中每个元素都来自均值为0.0,标准差为1.0的分布
描述
从state状态的MRG32k3a生成器返回两个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ double2 mcrand_normal2_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回两个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布double2类型双精度浮点数,其中每个元素都来自均值为0.0,标准差为1.0的分布
描述
从state状态的Philox4_32_10生成器返回两个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ double2 mcrand_normal2_double ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回两个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布double2类型双精度浮点数,其中每个元素都来自均值为0.0,标准差为1.0的分布
描述
从state状态的XORWOW生成器返回两个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增两位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ float4 mcrand_normal4 ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回四个正态分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
正态分布float2类型浮点数,其中每个元素都来自均值为0.0f,标准差为1.0f的分布
描述
从state状态的Philox4_32_10生成器返回四个均值为0.0f,标准差为1.0f的正态分布浮点数,生成器的位置递增四位。
该实现使用Box-Muller变换生成两个符合正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的Scrambled Sobol64生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateSobol64_t* state )
从Sobol64生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的Scrambled Sobol64生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的Scrambled Sobol32生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateSobol32_t* state )
从Sobol32生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的Sobol32生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateMtgp32_t* state )
从MTGP32生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的MTGP32生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用逆累积分布函数来生成正态分布的结果。
__device__ double mcrand_normal_double ( mcrandStateMRG32k3a_t* state )
从MRG32k3a生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的XORWOW生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ double mcrand_normal_double ( mcrandStatePhilox4_32_10_t* state )
从Philox4_32_10生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的Philox4_32_10生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ double mcrand_normal_double ( mcrandStateXORWOW_t* state )
从XORWOW生成器返回一个正态分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
均值为 0.0,标准差为 1.0 的正态分布双精度浮点数
描述
从state状态的XORWOW生成器返回一个均值为0.0,标准差为1.0的正态分布双精度浮点数,生成器的位置递增一位。
该实现使用Box-Muller变换生成两个符合正态分布的结果,并逐个返回。如果希望以更高效的方式同时返回两个结果,请参见mcrand_normal2()函数。
__device__ unsigned int mcrand_poisson ( mcrandStateScrambledSobol64_t* state, double lambda )
从Scrambled Sobol64生成器返回一个泊松分布的无符号整型数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的Scrambled Sobol64生成器中使用 lambda 的值为 lambda 的泊松分布返回单个无符号整型,生成器的位置递增一位。
__device__ unsigned int mcrand_poisson ( mcrandStateSobol64_t* state, double lambda )
从Sobol64生成器返回一个泊松分布的无符号整型数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的Sobol64生成器中使用 lambda 的值为 lambda 的泊松分布返回单个无符号整型,生成器的位置递增一位。
__device__ unsigned int mcrand_poisson ( mcrandStateScrambledSobol32_t* state, double lambda )
从Scrambled Sobol32生成器返回一个泊松分布的无符号整型数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的Scrambled Sobol32生成器中使用 lambda 的值为 lambda 的泊松分布返回单个无符号整型,生成器的位置递增一位。
__device__ unsigned int mcrand_poisson ( mcrandStateSobol32_t* state, double lambda )
从 Sobol32 生成器返回泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 Sobol32 生成器中使用 lambda 的值为 lambda 的泊松分布返回单个无符号整型,生成器的位置递增一位。
__device__ unsigned int mcrand_poisson ( mcrandStateMtgp32_t* state, double lambda )
从 MTGP32 生成器返回泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 MTGP32 生成器中返回 lambda 的值为 lambda 的泊松分布的单个整型,生成器的位置递增一位。
__device__ unsigned int mcrand_poisson ( mcrandStateMRG32k3a_t* state, double lambda )
从 MRG32k3A 生成器返回泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 MRG32k3a 生成器返回一个lambda的值为lambda的泊松分布无符号整数,并根据所使用的算法,以可变的数量递增生成器的位置。
__device__ unsigned int mcrand_poisson ( mcrandStatePhilox4_32_10_t* state, double lambda )
从 Philox4_32_10 生成器返回泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 Philox4_32_10 生成器中返回一个lambda的值为lambda的泊松分布无符号整数,并根据所使用的算法,以可变的数量递增生成器的位置。
__device__ unsigned int mcrand_poisson ( mcrandStateXORWOW_t* state, double lambda )
从 XORWOW 生成器返回泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 XORWOW 生成器中返回一个lambda的值为lambda的泊松分布无符号整数,并根据所使用的算法,以可变的数量递增生成器的位置。
__device__ uint4 mcrand_poisson4 ( mcrandStatePhilox4_32_10_t* state, double lambda )
从 Philox4_32_10 生成器返回四个泊松分布的无符号整数。
参数
state
指向要更新的状态的指针
lambda
泊松分布的Lambda
返回值
lambda的值为lambda的泊松分布无符号整数
描述
从state状态的 Philox4_32_10 生成器返回四个lambda的值为lambda的泊松分布无符号整数,并根据所使用的算法,以可变的数量递增生成器的位置。
__device__ float mcrand_uniform ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64 生成器返回一个均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的Scrambled Sobol64生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用了对 mcrand() 的单次调用。
__device__ float mcrand_uniform ( mcrandStateSobol64_t* state )
从 Sobol64 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的Sobol64生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用了对 mcrand() 的单次调用。
__device__ float mcrand_uniform ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的Scrambled Sobol32生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用了对 mcrand() 的单次调用。
__device__ float mcrand_uniform ( mcrandStateSobol32_t* state )
从 Sobol32 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的Sobol32生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用了对 mcrand() 的单次调用。
__device__ float mcrand_uniform ( mcrandStateMtgp32_t* state )
从 MTGP32 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的MTGP32生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
__device__ float mcrand_uniform ( mcrandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 到 1.0f 之间均匀分布的浮点数
描述
从state状态的Philox4_32_10生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
__device__ float mcrand_uniform ( mcrandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的MRG32k3a生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现返回最多23位尾数,并带有最小返回值
__device__ float mcrand_uniform ( mcrandStateXORWOW_t* state )
从 XORWOW 生成器返回均匀分布的浮点数。
参数
state
指向要更新的状态的指针
返回值
介于 0.0f 和 1.0f 之间的均匀分布的浮点数
描述
从state状态的XORWOW生成器返回一个分布在0.0f到1.0f之间的均匀浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现可以使用任意数量的 mcrand() 调用来获取足够的随机位来创建返回值。 当前的实现使用一次调用。
__device__ double2 mcrand_uniform2_double ( mcrandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回包含 2 个双精度浮点数的均匀分布元组。
参数
state
指向要更新的状态的指针
返回值
2 个均匀分布在 0.0f 和 1.0f 之间的双精度浮点数
描述
从state状态的 Philox4_32_10 生成器返回 0.0f 和 1.0f 之间均匀分布的 2 个双精度浮点数 (double4),将生成器的位置递增四位。输出范围不包括 0.0f,但包括 1.0f。不返回非标准化的浮点数输出。
__device__ float4 mcrand_uniform4 ( mcrandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回包含 4 个浮点数的均匀分布元组。
参数
state
指向要更新的状态的指针
返回值
0.0f 到 1.0f 之间均匀分布的浮点数
描述
从state状态的 Philox4_32_10 生成器返回 0.0f 和 1.0f 之间均匀分布的 4 个浮点数,将生成器的位置递增四位。输出范围不包括 0.0f,但包括 1.0f。不返回非标准化的浮点数输出。
__device__ double mcrand_uniform_double ( mcrandStateScrambledSobol64_t* state )
从Scrambled Sobol64 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的打乱后的Sobol64生成器返回一个在0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用对 mcrand() 的单次调用以保持序列的准随机属性。
__device__ double mcrand_uniform_double ( mcrandStateSobol64_t* state )
从 Sobol64 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的Sobol64生成器返回一个在0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用对 mcrand() 的单次调用以保持序列的准随机属性。
__device__ double mcrand_uniform_double ( mcrandStateScrambledSobol32_t* state )
从Scrambled Sobol32 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的打乱后的Sobol32生成器返回一个在0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用对 mcrand() 的单次调用以保持序列的准随机属性。
请注意,该实现仅使用 32 个随机位来生成单个双精度值。
__device__ double mcrand_uniform_double ( mcrandStateSobol32_t* state )
从 Sobol32 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的Sobol32生成器返回一个0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现保证使用对 mcrand() 的单次调用以保持序列的准随机属性。
请注意,该实现仅使用 32 个随机位来生成单个双精度值。
__device__ double mcrand_uniform_double ( mcrandStatePhilox4_32_10_t* state )
从 Philox4_32_10 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的Philox4_32_10生成器返回一个在0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
请注意,该实现仅使用 32 个随机位来生成单个双精度值。
建议使用 mcrand_uniform2_double() 来生成更高质量的均匀分布双精度值。
__device__ double mcrand_uniform_double ( mcrandStateMtgp32_t* state )
从 MTGP32 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的MTGP32生成器返回一个介于0.0f和1.0f之间的均匀分布双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
请注意,该实现仅使用 32 个随机位来生成单个双精度值。
__device__ double mcrand_uniform_double ( mcrandStateMRG32k3a_t* state )
从 MRG32k3a 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的MRG32k3a生成器返回一个介于0.0f和1.0f之间的均匀分布双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
请注意,如 L’Ecuyer 的开创性论文中所述,该实现最多返回 32 个随机尾数位。
__device__ double mcrand_uniform_double ( mcrandStateXORWOW_t* state )
从 XORWOW 生成器返回均匀分布的双精度浮点数。
参数
state
指向要更新的状态的指针
返回值
0.0f 和 1.0f 之间均匀分布的双精度浮点数
描述
从state状态的XORWOW生成器返回一个在0.0f到1.0f之间的均匀分布的双精度浮点数,生成器的位置递增一位。输出范围不包括0.0f,但包括1.0f。不返回非标准化的浮点数输出。
该实现可以使用任意数量的 mcrand() 调用来获取足够的随机位来创建返回值。 当前的实现仅使用两次调用。
template < typename T >
__device__ MCRAND_STD::enable_if < MCRAND_STD::is_same < mcrandStateSobol64_t* > ::type skipahead ( unsigned long long n, T state ) [inline]
更新 Sobol64 状态,以跳过 n 个元素。
参数
n
要跳过的元素数
state
指向要更新的状态的指针
描述
更新state中的 Sobol64 状态,以跳过 n 个元素。
所有 n 值均有效。
template < typename T >
__device__ MCRAND_STD::enable_if < MCRAND_STD::is_same < mcrandStateSobol32_t* > ::type skipahead ( unsigned int n, T state ) [inline]
更新 Sobol32 状态,以跳过 n 个元素。
参数
n
要跳过的元素数
state
指向要更新的状态的指针
描述
更新state中的 Sobol32 状态,以跳过 n 个元素。
所有 n 值均有效。
__device__ void skipahead ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新 MRG32k3a 状态,以跳过 n 个元素。
参数
n
要跳过的元素数
state
指向要更新的状态的指针
描述
更新state中的MRG32k3a状态以跳过n个元素。
所有 n 值均有效。 较大的数值需要更多计算,因此需要更多时间来完成。
__device__ void skipahead ( unsigned long long n, mcrandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态,以跳过 n 个元素。
参数
n
要跳过的元素数
state
指向要更新的状态的指针
描述
更新state中的Philox4_32_10状态以跳过n个元素。
所有 n 值均有效。
__device__ void skipahead ( unsigned long long n, mcrandStateXORWOW_t* state )
更新 XORWOW 状态,跳过 n 个元素。
参数
n
要跳过的元素数
state
指向要更新的状态的指针
描述
更新state中的 XORWOW 状态,以跳过 n 个元素。
所有 n 值均有效。 较大的数值需要更多计算,因此需要更多时间来完成。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新 MRG32k3a 状态,跳过 n 个序列。
参数
n
要跳过的序列数
state
指向要更新的状态的指针
描述
更新state中的 MRG32k3a 状态,跳过 n 个序列。每个序列长 2127 个元素,因此该函数将跳过 2127 * n 个元素。
所有 n 值均有效。 较大的数值需要更多计算,因此需要更多时间来完成。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStatePhilox4_32_10_t* state )
更新 Philox4_32_10 状态,以跳过 n 个子序列。
参数
n
要跳过的子序列数
state
指向要更新的状态的指针
描述
更新state中的 Philox4_32_10 状态,以跳过 n 个子序列。每个子序列有 266 个元素,因此该函数将跳过 266 * n 个元素。
所有 n 值均有效。
__device__ void skipahead_sequence ( unsigned long long n, mcrandStateXORWOW_t* state )
更新 XORWOW 状态,跳过 n 个子序列。
参数
n
要跳过的子序列数
state
指向要更新的状态的指针
描述
更新state中的 XORWOW 状态,以跳过 n 个子序列。每个子序列有 267 个元素长,这意味着函数将跳过 267 * n 个元素。
所有 n 值均有效。 较大的数值需要更多计算,因此需要更多时间来完成。
__device__ void skipahead_subsequence ( unsigned long long n, mcrandStateMRG32k3a_t* state )
更新 MRG32k3a 状态,以跳过 n 个子序列。
参数
n
要跳过的子序列数
state
指向要更新的状态的指针
描述
更新state中的 MRG32k3a 状态,以跳过 n 个子序列。每个子序列为 2127276 个元素长,因此这意味着该函数将跳过 267 * n 个元素。
n 的有效值为 0 到 251。注意 n 将被屏蔽为 51 位。