Skip to main content

muRAND API 参考

引言

muRAND 库主要提供用于生成高质量伪随机数和准随机数的函数。在 Moore Threads® MUSA® 运行时之上,这个库以简单高效的方式提供了对 Moore Threads 图形处理单元(GPU)的并行计算资源的访问。

muRAND 包括主机和设备端的随机生成函数。这些函数可以在主机或设备上调用,但随机数生成仅在设备上产生。此外,设备端函数提供了自定义随机数生成器状态的灵活性。

支持的随机数生成器如下所示。

  • XORWOW
  • MRG32k3a
  • MTGP
  • Philox_4_32_
  • Sobol
  • Sobol
  • Scrambled Sobol
  • Scrambled Sobol

在此版本中,muRAND 支持单精度和双精度数据类型。

模块

以下是所有模块的列表:

  • HOST API
  • DEVICE API

HOST API

宏定义

  • #define MURAND_DEFAULT_MAX_BLOCK_SIZE 256

类型定义

  • typedef enum murandStatus murandStatus_t
    返回状态码。
  • typedef enum murandRngType murandRngType_t
    通过调用 murandCreateGenerator() 创建随机数生成器。
  • typedef enum murandOrdering murandOrdering_t
    muRAND 随机数排序。

枚举类型

// 返回状态码。
enum murandStatus {
MURAND_STATUS_SUCCESS = 0,
MURAND_STATUS_VERSION_MISMATCH = 100,
MURAND_STATUS_NOT_CREATED = 101,
MURAND_STATUS_ALLOCATION_FAILED = 102,
MURAND_STATUS_TYPE_ERROR = 103,
MURAND_STATUS_OUT_OF_RANGE = 104,
MURAND_STATUS_LENGTH_NOT_MULTIPLE = 105,
MURAND_STATUS_DOUBLE_PRECISION_REQUIRED = 106,
MURAND_STATUS_LAUNCH_FAILURE = 107,
MURAND_STATUS_INTERNAL_ERROR = 108,
MURAND_STATUS_NOT_IMPLEMENTED = 1000
};

// 随机数生成器通过调用 murandCreateGenerator() 创建。
enum murandRngType {
MURAND_RNG_PSEUDO_DEFAULT = 400,
MURAND_RNG_PSEUDO_XORWOW = 401,
MURAND_RNG_PSEUDO_MRG32K3A = 402,
MURAND_RNG_PSEUDO_MTGP32 = 403,
MURAND_RNG_PSEUDO_PHILOX4_32_10 = 404,
MURAND_RNG_QUASI_DEFAULT = 500,
MURAND_RNG_QUASI_SOBOL32 = 501,
MURAND_RNG_QUASI_SCRAMBLED_SOBOL32 = 502,
MURAND_RNG_QUASI_SOBOL64 = 504,
MURAND_RNG_QUASI_SCRAMBLED_SOBOL64 = 505
};

// muRAND 生成器的排序。
enum murandOrdering {
MURAND_ORDERING_PSEUDO_BEST = 100,
MURAND_ORDERING_PSEUDO_DEFAULT = 101,
MURAND_ORDERING_PSEUDO_SEEDED = 102,
MURAND_ORDERING_PSEUDO_LEGACY = 103,
MURAND_ORDERING_PSEUDO_DYNAMIC = 104,
MURAND_ORDERING_QUASI_DEFAULT = 201
};

// 方向向量集。
enum murandDirectionVectorSet {
MURAND_DIRECTION_VECTORS_32_JOEKUO6,
MURAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6,
MURAND_DIRECTION_VECTORS_64_JOEKUO6,
MURAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6
};

函数

murandStatus_t MURANDAPI murandCreateGenerator(murandGenerator_t* generator, murandRngType_t rng_type)
创建一个新的随机数生成器。

murandStatus_t MURANDAPI murandDestroyGenerator(murandGenerator_t generator)
销毁指定的生成器。

murandStatus_t MURANDAPI murandGenerate(murandGenerator_t generator, unsigned int* output_data, size_t n)
生成符合均匀分布的 32 位无符号整数。

murandStatus_t MURANDAPI murandGenerateLongLong(murandGenerator_t generator, unsigned long long int* output_data, size_t n)
生成符合均匀分布的 64 位无符号整数。

murandStatus_t MURANDAPI murandGenerateUniform(murandGenerator_t generator, float* output_data, size_t n)
生成符合均匀分布的浮点值。

murandStatus_t MURANDAPI murandGenerateUniformDouble(murandGenerator_t generator, double* output_data, size_t n)
生成符合均匀分布的双精度浮点值。

murandStatus_t MURANDAPI murandGenerateNormal(murandGenerator_t generator, float* output_data, size_t n, float mean, float stddev)
生成符合正态分布的浮点值。

murandStatus_t MURANDAPI murandGenerateNormalDouble(murandGenerator_t generator, double* output_data, size_t n, double mean, double stddev)
生成符合正态分布的双精度值。

murandStatus_t MURANDAPI murandGenerateLogNormal(murandGenerator_t generator, float* output_data, size_t n, float mean, float stddev)
生成符合对数正态分布的浮点值。

murandStatus_t MURANDAPI murandGenerateLogNormalDouble(murandGenerator_t generator, double* output_data, size_t n, double mean, double stddev)
生成符合对数正态分布的双精度值。

murandStatus_t MURANDAPI murandGeneratePoisson(murandGenerator_t generator, unsigned int* output_data, size_t n, double lambda)
生成符合泊松分布的 32 位无符号整数。

murandStatus_t MURANDAPI murandGenerateSeeds(murandGenerator_t generator)
设置起始状态。

murandStatus_t MURANDAPI murandSetStream(murandGenerator_t generator, MUstream stream)
设置内核启动的当前流。

murandStatus_t MURANDAPI murandSetPseudoRandomGeneratorSeed(murandGenerator_t generator, unsigned long long seed)
设置伪随机数生成器的种子。

murandStatus_t MURANDAPI murandSetGeneratorOffset(murandGenerator_t generator, unsigned long long offset)
设置随机数生成器的偏移量。

murandStatus_t MURANDAPI murandSetGeneratorOrdering(murandGenerator_t generator, murandOrdering_t order)
设置随机数生成器的顺序。

murandStatus_t MURANDAPI murandSetQuasiRandomGeneratorDimensions(murandGenerator_t generator, unsigned int dimensions)
设置准随机数生成器的维度数。

murandStatus_t MURANDAPI murandGetVersion(int* version)
返回库的版本。

murandStatus_t MURANDAPI murandCreatePoissonDistribution(double lambda, murandDiscreteDistribution_t* discrete_distribution)
构建泊松分布的直方图。

murandStatus_t MURANDAPI murandDestroyDistribution(murandDiscreteDistribution_t discrete_distribution)
销毁离散分布的直方图数组。

murandStatus_t MURANDAPI murandGetDirectionVectors32(murandDirectionVectors32_t* vectors[], murandDirectionVectorSet_t set)
获取用于生成 32 位准随机数的方向向量。

murandStatus_t MURANDAPI murandGetScrambleConstants32(unsigned int** constants)
获取 32 位 scrambled Sobol 的打乱常量。

murandStatus_t MURANDAPI murandGetDirectionVectors64(murandDirectionVectors64_t* vectors[], murandDirectionVectorSet_t set)
获取 64 位准随机数生成的方向向量。

murandStatus_t MURANDAPI murandGetScrambleConstants64(unsigned long long** constants)
获取 64 位 scrambled Sobol 的打乱常量。

murandDirectionVectorSet

enum murandDirectionVectorSet

MURAND 32 位方向向量的数组。MURAND 64 位方向向量的数组。MURAND 方向向量集的选择。

枚举值

MURAND_DIRECTION_VECTORS_32_JOEKUO6
由多项式生成的特定 32 位方向向量集,最多 20,000 维。

MURAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO
由多项式生成的特定 32 位方向向量集,最多 20,000 维,并且打乱。

MURAND_DIRECTION_VECTORS_64_JOEKUO6
由多项式生成的特定 64 位方向向量集,最多 20,000 维。

MURAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO
由多项式生成的特定 64 位方向向量集,最多 20,000 维,并且打乱。

murandOrdering

enum murandOrdering

muRAND 生成器的排序。

枚举值

MURAND_ORDERING_PSEUDO_BEST
伪随机结果的最佳排序。

MURAND_ORDERING_PSEUDO_DEFAULT
伪随机结果的默认排序。

MURAND_ORDERING_PSEUDO_SEEDED
快速、低质量的伪随机结果。

MURAND_ORDERING_PSEUDO_LEGACY
伪随机结果的遗留排序。

MURAND_ORDERING_PSEUDO_DYNAMIC
调整执行生成器的设备。

MURAND_ORDERING_QUASI_DEFAULT
n 维的准随机结果排序。

murandRngType

enum murandRngType

muRAND 生成器类型。

枚举值

MURAND_RNG_PSEUDO_DEFAULT 默认伪随机生成器。

MURAND_RNG_PSEUDO_XORWOW XORWOW 伪随机生成器。

MURAND_RNG_PSEUDO_MRG32K3A MRG32k3a 伪随机生成器。

MURAND_RNG_PSEUDO_MTGP32 Mersenne Twister MTGP32 伪随机生成器。

MURAND_RNG_PSEUDO_PHILOX4_32_10 PHILOX-4x32-10 伪随机生成器。

MURAND_RNG_QUASI_DEFAULT 默认准随机生成器。

MURAND_RNG_QUASI_SOBOL32 Sobol32 准随机生成器。

MURAND_RNG_QUASI_SCRAMBLED_SOBOL32 scrambled Sobol32 准随机生成器。

MURAND_RNG_QUASI_SOBOL64 Sobol64 准随机生成器。

MURAND_RNG_QUASI_SCRAMBLED_SOBOL64 scrambled Sobol64 准随机生成器。

murandStatus

enum murandStatus

返回状态码。

枚举值

MURAND_STATUS_SUCCESS
muRAND 操作成功。

MURAND_STATUS_VERSION_MISMATCH
头文件和链接库版本不匹配。

MURAND_STATUS_NOT_CREATED
生成器未通过 murandCreateGenerator() 创建。

MURAND_STATUS_ALLOCATION_FAILED
内存分配失败。

MURAND_STATUS_TYPE_ERROR
生成器类型错误。

MURAND_STATUS_OUT_OF_RANGE
传递的参数超出范围。

MURAND_STATUS_LENGTH_NOT_MULTIPLE
请求的大小不是准随机生成器维度的倍数,或请求的大小不是偶数(见 murandGenerateNormal()),或指针未对齐(见 murandGenerateNormal())。

MURAND_STATUS_DOUBLE_PRECISION_REQUIRED
GPU 上不支持双精度。

MURAND_STATUS_LAUNCH_FAILURE
内核启动失败。

MURAND_STATUS_INTERNAL_ERROR
内部库错误。

MURAND_STATUS_NOT_IMPLEMENTED
函数尚未实现。

murandCreateGenerator()

murandStatus_t MURANDAPI murandCreateGenerator(
murandGenerator_t* generator,
murandRngType_t rng_type
);

创建一个新的随机数生成器。

创建一个新的随机数生成器,类型为 rng_type,并将生成器返回在 generator 中。

支持的 rng_type 如下:

  • MURAND_RNG_PSEUDO_XORWOW
  • MURAND_RNG_PSEUDO_MRG32K3A
  • MURAND_RNG_PSEUDO_MTGP
  • MURAND_RNG_PSEUDO_PHILOX4_32_
  • MURAND_RNG_QUASI_SOBOL
  • MURAND_RNG_QUASI_SCRAMBLED_SOBOL
  • MURAND_RNG_QUASI_SOBOL
  • MURAND_RNG_QUASI_SCRAMBLED_SOBOL

参数

generator 指向生成器的指针。

rng_type 要创建的生成器类型。

返回值

MURAND_STATUS_SUCCESS
如果 muRAND 成功创建了生成器。

MURAND_STATUS_ALLOCATION_FAILED
如果内存分配失败。

MURAND_STATUS_VERSION_MISMATCH
头文件版本和动态链接库版本不匹配。

MURAND_STATUS_TYPE_ERROR
rng_type 的值无效。

murandCreatePoissonDistribution()

murandStatus_t MURANDAPI murandCreatePoissonDistribution(
double lambda,
murandDiscreteDistribution_t* discrete_distribution
);

构建泊松分布的直方图。

用 lambda 构建泊松分布的直方图。

参数

lambda - 泊松分布的 lambda 值。

discrete_distribution - 设备内存中直方图的指针。

返回值

MURAND_STATUS_SUCCESS
如果直方图构建成功。

MURAND_STATUS_ALLOCATION_FAILED
如果内存无法分配。

MURAND_STATUS_OUT_OF_RANGE
如果 discrete_distribution 指针为空。

MURAND_STATUS_OUT_OF_RANGE
如果 lambda 非正。

murandDestroyDistribution()

murandStatus_t MURANDAPI murandDestroyDistribution(
murandDiscreteDistribution_t discrete_distribution
);

销毁离散分布的直方图数组。

销毁由 murandCreatePoissonDistribution() 创建的离散分布的直方图数组。

参数

discrete_distribution - 设备内存中直方图的指针。

返回值

MURAND_STATUS_OUT_OF_RANGE
如果 discrete_distribution 为空。

MURAND_STATUS_SUCCESS
如果直方图成功销毁。

murandDestroyGenerator()

murandStatus_t MURANDAPI murandDestroyGenerator(
murandGenerator_t generator
);

销毁指定的生成器。

销毁随机数生成器并释放相关内存。

参数

generator - 要销毁的生成器。

返回值

MURAND_STATUS_SUCCESS
如果 muRAND 成功销毁了生成器。

MURAND_STATUS_NOT_CREATED
生成器未被创建。

murandGenerate()

murandStatus_t MURANDAPI murandGenerate(
murandGenerator_t generator,
unsigned int* output_data,
size_t n
);

生成符合均匀分布的 32 位无符号整数。

生成 n 个符合均匀分布的 32 位无符号整数,并将它们保存到 output_data 中。

这些数字在 0 和 2^32 之间,包括 0,不包括 2^32。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的 32 位无符号整数的数量。

返回值

MURAND_STATUS_SUCCESS
如果随机数成功生成。

MURAND_STATUS_NOT_CREATED
如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE
如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE
如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateLogNormal()

murandStatus_t MURANDAPI murandGenerateLogNormal ( murandGenerator_t generator, float∗output_data, size_t n, float mean, float stddev)

生成符合对数正态分布的 float 值。

生成 n 个符合对数正态分布的 32 位浮点值,并将它们保存到 output_data 中。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的浮点数的数量。

mean - 对数正态分布的均值。

stddev - 对数正态分布的标准差。

返回值

MURAND_STATUS_SUCCESS
如果随机数成功生成。

MURAND_STATUS_NOT_CREATED
如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE
如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE
如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateLogNormalDouble()

murandStatus_t MURANDAPI murandGenerateLogNormalDouble(
murandGenerator_t generator,
double* output_data,
size_t n,
double mean,
double stddev
);

生成符合对数正态分布的 double 值。

生成 n 个符合对数正态分布的 64 位双精度浮点值,并将它们保存到 output_data 中。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的双精度数的数量。

mean - 对数正态分布的均值。

stddev - 对数正态分布的标准差。

返回值

MURAND_STATUS_SUCCESS
如果随机数成功生成。

MURAND_STATUS_NOT_CREATED
如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE
如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE
如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateLongLong()

murandStatus_t MURANDAPI murandGenerateLongLong (
murandGenerator_t generator,
unsigned long long int* output_data,
size_t n
);

生成符合均匀分布的 64 位无符号整数。

生成 n 个符合均匀分布的 64 位无符号整数,并将它们保存到 output_data 中。

这些数字在 0 和 2^64 之间,包括 0,不包括 2^64。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的 64 位无符号整数的数量。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

MURAND_TYPE_ERROR 如果生成器不能在本地生成 64 位随机数。

murandGenerateNormal()

murandStatus_t MURANDAPI murandGenerateNormal(
murandGenerator_t generator,
float* output_data,
size_t n,
float mean,
float stddev
);

生成符合正态分布的 float 值。

生成 n 个符合正态分布的 32 位浮点值,并将它们保存到 output_data 中。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的浮点数的数量。

mean - 正态分布的均值。

stddev - 正态分布的标准差。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateNormalDouble()

murandStatus_t MURANDAPI murandGenerateNormalDouble(
murandGenerator_t generator,
double* output_data,
size_t n,
double mean,
double stddev
);

生成符合正态分布的 double 值。

生成 n 个符合正态分布的 64 位双精度浮点数,并将它们保存到 output_data 中。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的双精度数的数量。

mean - 正态分布的均值。

stddev - 正态分布的标准差。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

murandGeneratePoisson()

murandStatus_t MURANDAPI murandGeneratePoisson (
murandGenerator_t generator,
unsigned int ∗output_data,
size_t n,
double lambda)

生成符合泊松分布的 32 位无符号整数。

生成 n 个符合泊松分布的 32 位无符号整数,并将它们保存到 output_data 中。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的 32 位无符号整数的数量。

lambda - 泊松分布的 lambda 值。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_OUT_OF_RANGE 如果 lambda 非正。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateSeeds()

murandStatus_t MURANDAPI murandGenerateSeeds (
murandGenerator_t generator)

设置起始状态。

在 GPU 或主机上初始化生成器的状态。用户在使用生成器之前不需要调用此函数。

如果未为生成器调用 murand_initialize(),则在生成随机数的函数(如 murandGenerate() 等)中将自动调用它。

参数

generator - 要初始化的生成器。

返回值

MURAND_STATUS_SUCCESS 如果种子成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

murandGenerateUniform()

murandStatus_t MURANDAPI murandGenerateUniform (
murandGenerator_t generator,
float ∗output_data,
size_t n)

生成符合均匀分布的 float 值。

生成 n 个符合均匀分布的 32 位浮点值,并将它们保存到 output_data 中。

这些数字在 0.0f 和 1.0f 之间,不包括 0.0f,包括 1.0f。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的浮点数的数量。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

murandGenerateUniformDouble()

murandStatus_t MURANDAPI murandGenerateUniformDouble (
murandGenerator_t generator,
double ∗output_data,
size_t n)

生成符合均匀分布的双精度浮点值。 生成 n 个符合均匀分布的 64 位双精度浮点值,并将它们保存到 output_data 中。 这些数字在 0.0 和 1.0 之间,不包括 0.0,包括 1.0。

参数

generator - 使用的生成器。

output_data - 存储生成数字的内存指针。

n - 要生成的双精度数的数量。

返回值

MURAND_STATUS_SUCCESS 如果随机数成功生成。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_LAUNCH_FAILURE 如果 MUSA 内核启动失败。

MURAND_STATUS_LENGTH_NOT_MULTIPLE 如果 n 不是使用的准随机生成器维度的倍数。

murandGetDirectionVectors32()

murandStatus_t MURANDAPI murandGetDirectionVectors32 (
murandDirectionVectors32_t ∗vectors[],
murandDirectionVectorSet_t set )

获取用于生成 32 位准随机数的方向向量。

获取一个指向方向向量数组的指针,该数组可用于生成准随机数。结果指针将引用主机内存中的方向向量数组。

该数组包含多个维度的向量。每个维度有 32 个向量。每个向量是一个无符号 int。

支持的 set 值如下:

  • MURAND_DIRECTION_VECTORS_32_JOEKUO6 (20,000 维度)。
  • MURAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6 (20,000 维度)。

参数

vectors - 要返回方向向量的指针地址。

set - 要使用的方向向量集合。

返回值

MURAND_STATUS_SUCCESS 如果指针成功设置。

MURAND_STATUS_OUT_OF_RANGE 如果集合选择无效。

murandGetDirectionVectors64()

murandStatus_t MURANDAPI murandGetDirectionVectors64 (
murandDirectionVectors64_t ∗vectors[],
murandDirectionVectorSet_tset )

获取 64 位准随机数生成的方向向量。

获取一个指向方向向量数组的指针,该数组可用于生成准随机数。结果指针将引用主机内存中的方向向量数组。

该数组包含多个维度的向量。每个维度有 64 个向量。每个向量是一个无符号 long long。

支持的 set 值如下:

  • MURAND_DIRECTION_VECTORS_64_JOEKUO6 (20,000 维度)。
  • MURAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6 (20,000 维度)。

参数

vectors - 要返回方向向量的指针地址。

set - 要使用的方向向量集合。

返回值

MURAND_STATUS_OUT_OF_RANGE 如果集合选择无效。

MURAND_STATUS_SUCCESS 如果指针成功设置。

murandGetScrambleConstants32()

murandStatus_t MURANDAPI murandGetScrambleConstants32 (
unsigned int ∗∗constants)

获取 32 位 scrambled Sobol 的打乱常量。

获取一个指向打乱常量数组的指针,该数组可用于生成准随机数。结果指针将引用主机内存中的无符号 int 数组。

该数组包含多个维度的向量。每个维度有一个无符号 int 常数。

参数

constants - 要返回打乱常量的指针地址。

返回值

MURAND_STATUS_SUCCESS 如果指针成功设置。

murandGetScrambleConstants64()

murandStatus_t MURANDAPI murandGetScrambleConstants64 (
unsigned long long∗∗constants)

获取 64 位 scrambled Sobol 的打乱常量。

获取一个指向打乱常量数组的指针,该数组可用于生成准随机数。结果指针将引用主机内存中的无符号 long long 数组。

该数组包含多个维度的常数。每个维度有一个无符号 long long 常数。

参数

constants - 要返回打乱常量的指针地址。

返回值

MURAND_STATUS_SUCCESS 如果指针成功设置。

murandGetVersion()

murandStatus_t MURANDAPI murandGetVersion (
int ∗version )

返回库的版本。

返回动态链接的 muRAND 库的版本。

参数

version - 库的版本。

返回值

MURAND_STATUS_OUT_OF_RANGE 如果 version 是 NULL。

MURAND_STATUS_SUCCESS 如果版本成功返回。

murandSetGeneratorOffset()

murandStatus_t MURANDAPI murandSetGeneratorOffset (
murandGenerator_t generator,
unsigned long long offset)

设置随机数生成器的偏移量。

设置随机数生成器的绝对偏移量。此函数将重置生成器的内部状态,但不会改变生成器的种子。 注意,如果生成器类型是 MURAND_RNG_PSEUDO_MTGP32,则不能设置绝对偏移量。

参数

generator - 随机数生成器。

offset - 新的绝对偏移量。

返回值

MURAND_STATUS_SUCCESS 如果偏移量成功设置。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_TYPE_ERROR 如果生成器类型是 MURAND_RNG_PSEUDO_MTGP32。

murandSetGeneratorOrdering()

murandStatus_t MURANDAPI murandSetGeneratorOrdering (
murandGenerator_t generator,
murandOrdering_t order)

设置随机数生成器的顺序。

设置随机数生成器结果的顺序。此函数将重置生成器的内部状态,但不会改变生成器的种子。

参数

generator - 随机数生成器。

order - 结果的新顺序。

伪随机序列的顺序选择有 MURAND_ORDERING_PSEUDO_DEFAULT 和 MURAND_ORDERING_PSEUDO_LEGACY。默认顺序是 MURAND_ORDERING_PSEUDO_DEFAULT,目前等同于 MURAND_ORDERING_PSEUDO_LEGACY。

对于准随机序列,只有一个顺序 MURAND_ORDERING_QUASI_DEFAULT。

返回值

MURAND_STATUS_SUCCESS 如果顺序成功设置。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_OUT_OF_RANGE 如果顺序无效。

MURAND_STATUS_TYPE_ERROR 如果生成器类型无效。

murandSetPseudoRandomGeneratorSeed()

murandStatus_t MURANDAPI murandSetPseudoRandomGeneratorSeed (
murandGenerator_t generator,
unsigned long long seed)

设置伪随机数生成器的种子。

此函数将重置生成器的内部状态,但不会改变生成器的偏移量。

对于 MRG32K3a 生成器,种子值不能为零。如果 seed 等于零且生成器类型是 MURAND_RNG_PSEUDO_MRG32K3A,则将使用 12345 作为种子值。

参数

generator - 伪随机数生成器。

seed - 种子值。

返回值

MURAND_STATUS_SUCCESS 如果种子成功设置。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_TYPE_ERROR 如果生成器是准随机数生成器。

murandSetQuasiRandomGeneratorDimensions()

murandStatus_t MURANDAPI murandSetQuasiRandomGeneratorDimensions (
murandGenerator_t generator,
unsigned int dimensions)

设置准随机数生成器的维度数量。

设置准随机数生成器的维度数量。支持的 dimensions 值是 1 到 20000。

此函数将重置生成器的内部状态,但不会改变生成器的偏移量。

参数

generator - 准随机数生成器。

dimensions - 维度数量。

返回值

MURAND_STATUS_SUCCESS 如果维度数量成功设置。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

MURAND_STATUS_TYPE_ERROR 如果生成器不是准随机数生成器。

MURAND_STATUS_OUT_OF_RANGE 如果 dimensions 超出范围。

murandSetStream()

murandStatus_t MURANDAPI murandSetStream (
murandGenerator_t generator,
MUstream stream)

设置当前内核启动的流。 为生成器的所有内核启动设置当前流。所有函数将使用此流,直到再次设置。

参数

generator - 要修改的生成器。

stream - 要使用的流或 NULL 表示默认流。

返回值

MURAND_STATUS_SUCCESS 如果流成功设置。

MURAND_STATUS_NOT_CREATED 如果生成器未被创建。

DEVICE API

宏定义

  • #define MURAND_MRG32K3A_DEFAULT_SEED 12345ULL MRG32K3A 伪随机数生成器的默认种子。
  • #define MURAND_PHILOX4x32_DEFAULT_SEED 0xdeadbeefdeadbeefULL PHILOX4x32 伪随机数生成器的默认种子。
  • #define FQUALIFIERS forceinline device
  • #define MURAND_XORWOW_DEFAULT_SEED 0ULL XORWOW 伪随机数生成器的默认种子。

函数

FQUALIFIERS float murand_log_normal(murandStatePhilox4_32_10_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStatePhilox4_32_10_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateMRG32k3a_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateMRG32k3a_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateXORWOW_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateXORWOW_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateMtgp32_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateMtgp32_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateSobol32_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateSobol32_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateScrambledSobol32_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateScrambledSobol32_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateSobol64_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateSobol64_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS float murand_log_normal(murandStateScrambledSobol64_t* state, float mean, float stddev)
返回一个对数正态分布的浮点数值。

FQUALIFIERS double murand_log_normal_double(murandStateScrambledSobol64_t* state, double mean, double stddev)
返回一个对数正态分布的双精度数值。

FQUALIFIERS void murand_init(const unsigned long long seed, const unsigned long long subsequence, const unsigned long long offset, murandStateMRG32k3a_t* state)
初始化 MRG32K3A 状态。

FQUALIFIERS unsigned int murand(murandStateMRG32k3a_t* state)
返回均匀分布的随机无符号整数值。

host murandStatus_t murandMakeMTGP32KernelState(murandStateMtgp32_t* d_state, mtgp32_params_fast_t params[], int n, unsigned long long seed)
初始化 MTGP32 状态。

FQUALIFIERS unsigned int murand(murandStateMtgp32_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS float murand_normal(murandStatePhilox4_32_10_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS float4 murand_normal4(murandStatePhilox4_32_10_t* state)
返回四个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStatePhilox4_32_10_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS double2 murand_normal2_double(murandStatePhilox4_32_10_t* state)
返回两个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateMRG32k3a_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateMRG32k3a_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS double2 murand_normal2_double(murandStateMRG32k3a_t* state)
返回两个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateXORWOW_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateXORWOW_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS double2 murand_normal2_double(murandStateXORWOW_t* state)
返回两个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateMtgp32_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateMtgp32_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateSobol32_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateSobol32_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateScrambledSobol32_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateScrambledSobol32_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateSobol64_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateSobol64_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS float murand_normal(murandStateScrambledSobol64_t* state)
返回一个正态分布的浮点数值。

FQUALIFIERS double murand_normal_double(murandStateScrambledSobol64_t* state)
返回一个正态分布的双精度数值。

FQUALIFIERS void murand_init(const unsigned long long seed, const unsigned long long subsequence, const unsigned long long offset, murandStatePhilox4_32_10_t* state)
初始化 Philox 状态。

FQUALIFIERS unsigned int murand(murandStatePhilox4_32_10_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS uint4 murand4(murandStatePhilox4_32_10_t* state)
返回四个均匀分布的随机无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStatePhilox4_32_10_t* state, double lambda)
使用 Philox 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStateMRG32k3a_t* state, double lambda)
使用 MRG32k3a 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStateXORWOW_t* state, double lambda)
使用 XORWOW 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStateMtgp32_t* state, double lambda)
使用 MTGP32 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStateSobol32_t* state, double lambda)
使用 SOBOL32 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned int murand_poisson(murandStateScrambledSobol32_t* state, double lambda)
使用 SCRAMBLED_SOBOL32 产生器返回一个泊松分布的无符号整数值。

FQUALIFIERS unsigned long long int murand_poisson(murandStateSobol64_t* state, double lambda)
使用 SOBOL64 产生器返回一个泊松分布的无符号长整数值。

FQUALIFIERS unsigned long long int murand_poisson(murandStateScrambledSobol64_t* state, double lambda)
使用 SCRAMBLED_SOBOL64 产生器返回一个泊松分布的无符号长整数值。

FQUALIFIERS void murand_init(const unsigned int* vectors, const unsigned int scramble_constant, const unsigned int offset, murandStateScrambledSobol32_t* state)
初始化 scrambled_sobol32 状态。

FQUALIFIERS unsigned int murand(murandStateScrambledSobol32_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS void murand_init(const unsigned long long int* vectors, const unsigned long long int scramble_constant, const unsigned int offset, murandStateScrambledSobol64_t* state)
初始化 scrambled_sobol64 状态。

FQUALIFIERS unsigned long long int murand(murandStateScrambledSobol64_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS void murand_init(const unsigned int* vectors, const unsigned int offset, murandStateSobol32_t* state)
初始化 SOBOL32 状态。

FQUALIFIERS unsigned int murand(murandStateSobol32_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS void murand_init(const unsigned long long int* vectors, const unsigned int offset, murandStateSobol64_t* state)
初始化 sobol64 状态。

FQUALIFIERS unsigned long long int murand(murandStateSobol64_t* state)
返回均匀分布的随机无符号整数值。

FQUALIFIERS float murand_uniform(murandStatePhilox4_32_10_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS float4 murand_uniform4(murandStatePhilox4_32_10_t* state)
返回四个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStatePhilox4_32_10_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS double2 murand_uniform2_double(murandStatePhilox4_32_10_t* state)
返回两个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateMRG32k3a_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateMRG32k3a_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateXORWOW_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateXORWOW_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateMtgp32_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateMtgp32_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateSobol32_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateSobol32_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateScrambledSobol32_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateScrambledSobol32_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateSobol64_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateSobol64_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS float murand_uniform(murandStateScrambledSobol64_t* state)
返回一个均匀分布的随机浮点数值。

FQUALIFIERS double murand_uniform_double(murandStateScrambledSobol64_t* state)
返回一个均匀分布的随机双精度数值。

FQUALIFIERS void murand_init(const unsigned long long seed, const unsigned long long subsequence, const unsigned long long offset, murandStateXORWOW_t* state)
初始化 XORWOW 状态。

FQUALIFIERS unsigned int murand(murandStateXORWOW_t* state)
返回均匀分布的随机无符号整数值。

murand()[1/8]

FQUALIFIERS unsigned int murand (
murandStateMRG32k3a_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 MRG32K3A 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

伪随机值(32位)作为无符号整型。

murand()[2/8]

FQUALIFIERS unsigned int murand (
murandStateMtgp32_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 MTGP32 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

伪随机值(32位)作为无符号整型。

murand()[3/8]

FQUALIFIERS unsigned int murand (
murandStatePhilox4_32_10_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 Philox 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

伪随机值(32位)作为无符号整型。

murand()[4/8]

FQUALIFIERS unsigned int murand (
murandStateScrambledSobol32_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 scrambled_sobol32 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

准随机值(32 位)作为无符号整型。

murand()[5/8]

FQUALIFIERS unsigned long long int murand (
murandStateScrambledSobol64_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 scrambled_sobol64 生成器生成并返回从 [0; 2^64 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

准随机值(64位)作为无符号整型。

murand()[6/8]

FQUALIFIERS unsigned int murand (
murandStateSobol32_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 Sobol32 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

准随机值(32位)作为无符号整型。

murand()[7/8]

FQUALIFIERS unsigned long long int murand (
murandStateSobol64_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 sobol64 生成器生成并返回从 [0; 2^64 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

准随机值(64 位)作为无符号整型。

murand()[8/8]

FQUALIFIERS unsigned int murand (
murandStateXORWOW_t ∗state)

返回均匀分布的随机无符号整型值。

使用 state 中的 XOR-WOW 生成器生成并返回从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加一个位置。

参数

state - 要使用的 state 的指针。

返回值

伪随机值(32位)作为无符号整型。

murand4()

FQUALIFIERS uint4 murand4 (
murandStatePhilox4_32_10_t ∗state)

返回四个均匀分布的随机无符号整型值。

使用 state 中的 Philox 生成器生成并返回四个从 [0; 2^32 - 1] 范围内均匀分布的随机无符号整型值。状态增加四个位置。

参数

state - 要使用的 state 的指针。

返回值

四个伪随机值(32 位)作为 uint4。

murand_init()[1/7]

FQUALIFIERS void murand_init (
const unsigned int ∗vectors,
const unsigned int offset,
murandStateSobol32_t ∗state)

初始化 SOBOL32 状态。

用给定的向量和偏移量初始化 SOBOL32 生成器状态。

参数

vectors - 方向向量。

offset - 序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[2/7]

FQUALIFIERS void murand_init (
const unsigned int ∗vectors,
const unsigned int scramble_constant,
const unsigned int offset,
murandStateScrambledSobol32_t ∗state)

初始化 scrambled_sobol32 状态。

用给定的向量和偏移量初始化 scrambled_sobol32 生成器状态。

参数

vectors - 方向向量。

scramble_constant - 用于混洗序列的常数。

offset - 序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[3/7]

FQUALIFIERS void murand_init (
const unsigned long long int ∗vectors,
const unsigned int offset,
murandStateSobol64_t ∗state)

初始化sobol64状态。

用给定的向量和偏移量初始化sobol64生成器状态。

参数

vectors - 方向向量。

offset - 序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[4/7]

FQUALIFIERS void murand_init (
const unsigned long long int ∗vectors,
const unsigned long long int scramble_constant,
const unsigned int offset,
murandStateScrambledSobol64_t ∗state)

初始化 scrambled_sobol64 状态。

用给定的向量和偏移量初始化 scrambled_sobol64 生成器状态。

参数

vectors - 方向向量。

scramble_constant - 用于混洗序列的常数。

offset - 序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[5/7]

FQUALIFIERS void murand_init (
const unsigned long long seed,
const unsigned long long subsequence,
const unsigned long long offset,
murandStateMRG32k3a_t ∗state)

初始化 MRG32K3A 状态。

用给定的种子、子序列和偏移量初始化 MRG32K3A 生成器状态。

参数

seed - 用作种子的值。

subsequence - 开始的子序列。

offset - 子序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[6/7]

FQUALIFIERS void murand_init (
const unsigned long long seed,
const unsigned long long subsequence,
const unsigned long long offset,
murandStatePhilox4_32_10_t ∗state)

初始化 Philox 状态。

用给定的种子、子序列和偏移量初始化 Philox 生成器状态。

参数

seed - 用作种子的值。

subsequence - 开始的子序列。

offset - 子序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_init()[7/7]

FQUALIFIERS void murand_init (
const unsigned long long seed,
const unsigned long long subsequence,
const unsigned long long offset,
murandStateXORWOW_t ∗state)

初始化 XORWOW 状态。

用给定的种子、子序列和偏移量初始化 XORWOW 生成器状态。

参数

seed - 用作种子的值。

subsequence - 开始的子序列。

offset - 子序列中的绝对偏移量。

state - 要初始化的状态的指针。

murand_log_normal()[1/8]

FQUALIFIERS float murand_log_normal (
murandStateMRG32k3a_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 MRG32k3a 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,将它们转换为对数正态分布的值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[2/8]

FQUALIFIERS float murand_log_normal (
murandStateMtgp32_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的MTGP32生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[3/8]

FQUALIFIERS float murand_log_normal (
murandStatePhilox4_32_10_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 Philox 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,将它们转换为对数正态分布的值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[4/8]

FQUALIFIERS float murand_log_normal (
murandStateScrambledSobol32_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 SCRAMBLED_SOBOL32 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[5/8]

FQUALIFIERS float murand_log_normal (
murandStateScrambledSobol64_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 SCRAMBLED_SOBOL64 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[6/8]

FQUALIFIERS float murand_log_normal (
murandStateSobol32_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 Sobol32 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[7/8]

FQUALIFIERS float murand_log_normal (
murandStateSobol64_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 sobol64 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal()[8/8]

FQUALIFIERS float murand_log_normal (
murandStateXORWOW_t ∗state,
float mean,
float stddev)

返回一个对数正态分布的浮点数值。

使用 state 中的 XORWOW 生成器生成并返回一个对数正态分布的浮点数值,并增加生成器的位置。这个函数使用 Box-Muller 变换,将两个正态分布的值转换为对数正态分布的值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的浮点数值。

murand_log_normal_double()[1/8]

FQUALIFIERS double murand_log_normal_double (
murandStateMRG32k3a_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 MRG32k3a 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。这个函数使用 Box-Muller 变换方法生成两个正态分布的双精度值,将它们转换为对数正态分布的双精度值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[2/8]

FQUALIFIERS double murand_log_normal_double (
murandStateMtgp32_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 MTGP32 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[3/8]

FQUALIFIERS double murand_log_normal_double (
murandStatePhilox4_32_10_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 Philox 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。这个函数使用 Box-Muller 变换方法生成两个正态分布的双精度值,将它们转换为对数正态分布的双精度值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[4/8]

FQUALIFIERS double murand_log_normal_double (
murandStateScrambledSobol32_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的SCRAMBLED_SOBOL32生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[5/8]

FQUALIFIERS double murand_log_normal_double (
murandStateScrambledSobol64_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 SCRAMBLED_SOBOL64 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[6/8]

FQUALIFIERS double murand_log_normal_double (
murandStateSobol32_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 Sobol32 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[7/8]

FQUALIFIERS double murand_log_normal_double (
murandStateSobol64_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 sobol64 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_log_normal_double()[8/8]

FQUALIFIERS double murand_log_normal_double (
murandStateXORWOW_t ∗state,
double mean,
double stddev)

返回一个对数正态分布的双精度值。

使用 state 中的 XORWOW 生成器生成并返回一个对数正态分布的双精度值,并增加生成器的位置。这个函数使用 Box-Muller 变换方法生成两个正态分布的双精度值,将它们转换为对数正态分布的双精度值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

mean - 相关对数正态分布的均值。

stddev - 相关对数正态分布的标准差。

返回值

对数正态分布的双精度值。

murand_normal()[1/8]

FQUALIFIERS float murand_normal (
murandStateMRG32k3a_t ∗state)

返回一个正态分布的浮点数值。

使用 state 中的 MRG32k3a 生成器生成并返回一个正态分布的浮点数值,并增加生成器的位置。使用的正态分布均值为 0.0f,标准差为 1.0f。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,返回第一个,并保存第二个以备下次调用时返回。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点数值。

murand_normal()[2/8]

FQUALIFIERS float murand_normal (
murandStateMtgp32_t ∗state)

返回一个正态分布的浮点数值。

在 state 中使用 MTGP32 生成器生成并返回一个正态分布的 float 值,并将生成器的位置增加1。使用的正态分布的平均值等于 0.0f,标准差等于 1.0f。

murand_normal()[3/8]

FQUALIFIERS float murand_normal (
murandStatePhilox4_32_10_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 Philox 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。此函数使用 Box-Muller 变换方法生成两个正态分布值,返回第一个,并保存第二个以备后续调用时返回。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal()[4/8]

FQUALIFIERS float murand_normal (
murandStateScrambledSobol32_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 SCRAMBLED_SOBOL32 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal()[5/8]

FQUALIFIERS float murand_normal (
murandStateScrambledSobol64_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 SCRAMBLED_SOBOL64 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal()[6/8]

FQUALIFIERS float murand_normal (
murandStateSobol32_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 Sobol32 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal()[7/8]

FQUALIFIERS float murand_normal (
murandStateSobol64_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 sobol64 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal()[8/8]

FQUALIFIERS float murand_normal (
murandStateXORWOW_t ∗state)

返回一个正态分布的浮点值。

使用 state 中的 XORWOW 生成器生成并返回一个正态分布的浮点值,并递增生成器的位置。使用的正态分布具有均值等于 0.0f,标准差等于 1.0f。此函数使用 Box-Muller 变换方法生成两个正态分布值,返回第一个,并保存第二个以备后续调用时返回。

参数

state - 要使用的 state 的指针。

返回值

正态分布的浮点值。

murand_normal2_double()[1/3]

FQUALIFIERS double2 murand_normal2_double (
murandStateMRG32k3a_t ∗state)

返回两个正态分布的 double 值。

使用 state 中的 MRG32k3a 生成器生成并返回两个正态分布的 double 值,并使生成器的位置增加两个。使用的正态分布具有等于 0.0f 的均值和等于 1.0f 的标准差。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,并返回它们。

参数

state - 要使用的 state 指针。

返回值

两个正态分布的 double 值,作为 double2 返回。

murand_normal2_double()[2/3]

FQUALIFIERS double2 murand_normal2_double (
murandStatePhilox4_32_10_t ∗state)

返回两个正态分布的 double 值。

使用 state 中的 Philox 生成器生成并返回两个正态分布的 double 值,并使生成器的位置增加四个。使用的正态分布具有等于 0.0f 的均值和等于 1.0f 的标准差。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,并返回它们。

参数

state - 要使用的state指针。

返回值

两个正态分布的 double 值,作为 double2 返回。

murand_normal2_double()[3/3]

FQUALIFIERS double2 murand_normal2_double (
murandStateXORWOW_t ∗state)

返回两个正态分布的double值。

使用 state 中的 XORWOW 生成器生成并返回两个正态分布的 double 值,并使生成器的位置增加四个。使用的正态分布具有等于 0.0f 的均值和等于 1.0f 的标准差。这个函数使用 Box-Muller 变换方法生成两个正态分布的值,并返回它们。

参数

state - 要使用的state指针。

返回值

两个正态分布的double值,作为double2返回。

murand_normal4()

FQUALIFIERS float4 murand_normal4 (
murandStatePhilox4_32_10_t ∗state)

返回四个正态分布的float值。

使用 state 中的Philox生成器生成并返回四个正态分布的float值,并使生成器的位置增加四个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。这个函数使用Box-Muller变换方法生成四个正态分布的值,并返回它们。

参数

state - 要使用的state指针。

返回值

四个正态分布的float值,作为float4返回。

murand_normal_double()[1/8]

FQUALIFIERS double murand_normal_double (
murandStateMRG32k3a_t ∗state)

返回一个正态分布的double值。

使用 state 中的MRG32k3a生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。这个函数使用Box-Muller变换方法生成两个正态分布的值,返回第一个,并保存第二个以备后续调用时返回。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[2/8]

FQUALIFIERS double murand_normal_double (
murandStateMtgp32_t ∗state)

返回一个正态分布的double值。

使用 state 中的MTGP32生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[3/8]

FQUALIFIERS double murand_normal_double (
murandStatePhilox4_32_10_t ∗state)

返回一个正态分布的double值。

使用 state 中的Philox生成器生成并返回一个正态分布的double值,并使生成器的位置增加两个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。这个函数使用Box-Muller变换方法生成两个正态分布的值,返回第一个,并保存第二个以备后续调用时返回。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[4/8]

FQUALIFIERS double murand_normal_double (
murandStateScrambledSobol32_t ∗state)

返回一个正态分布的double值。

使用 state 中的SCRAMBLED_SOBOL32生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[5/8]

FQUALIFIERS double murand_normal_double (
murandStateScrambledSobol64_t ∗state)

返回一个正态分布的double值。

使用 state 中的SCRAMBLED_SOBOL64生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[6/8]

FQUALIFIERS double murand_normal_double (
murandStateSobol32_t ∗state)

返回一个正态分布的double值。

使用 state 中的 Sobol32 生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[7/8]

FQUALIFIERS double murand_normal_double (
murandStateSobol64_t ∗state)

返回一个正态分布的double值。

使用 state 中的 sobol64 生成器生成并返回一个正态分布的double值,并使生成器的位置增加一个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_normal_double()[8/8]

FQUALIFIERS double murand_normal_double (
murandStateXORWOW_t ∗state)

返回一个正态分布的double值。

使用 state 中的XORWOW生成器生成并返回一个正态分布的double值,并使生成器的位置增加两个。使用的正态分布具有等于0.0f的均值和等于1.0f的标准差。这个函数使用Box-Muller变换方法生成两个正态分布的值,返回第一个,并保存第二个以备后续调用时返回。

参数

state - 要使用的state指针。

返回值

正态分布的double值。

murand_poisson()[1/8]

FQUALIFIERS unsigned int murand_poisson (
murandStateMRG32k3a_t ∗state,
double lambda)

使用MRG32k3a生成器返回一个泊松分布的unsigned int。

使用 state 中的MRG32k3a生成器生成并返回泊松分布的随机unsigned int值。state的位置会增加一个变量量。

参数

state - 要使用的state指针。

lambda - 泊松分布的lambda参数。

返回值

泊松分布的unsigned int。

murand_poisson()[2/8]

FQUALIFIERS unsigned int murand_poisson (
murandStateMtgp32_t ∗state,
double lambda)

使用MTGP32生成器返回一个泊松分布的unsigned int。

使用 state 中的MTGP32生成器生成并返回泊松分布的随机unsigned int值。state的位置增加一个位置。

参数

state - 要使用的state指针。

lambda - 泊松分布的lambda参数。

返回值

泊松分布的unsigned int。

murand_poisson()[3/8]

FQUALIFIERS unsigned int murand_poisson (
murandStatePhilox4_32_10_t ∗state,
double lambda)

使用Philox生成器返回一个泊松分布的unsigned int。

使用 state 中的Philox生成器生成并返回泊松分布的随机unsigned int值。state的位置会增加一个变量量。

参数

state - 要使用的state指针。

lambda - 泊松分布的lambda参数。

返回值

泊松分布的unsigned int。

murand_poisson()[4/8]

FQUALIFIERS unsigned int murand_poisson (
murandStateScrambledSobol32_t ∗state,
double lambda)

使用SCRAMBLED_SOBOL32生成器返回一个泊松分布的unsigned int。

使用 state 中的SCRAMBLED_SOBOL32生成器生成并返回泊松分布的随机unsigned int值。state的位置增加一个位置。

参数

state - 要使用的state指针。

lambda - 泊松分布的lambda参数。

返回值

泊松分布的unsigned int。

murand_poisson()[5/8]

FQUALIFIERS unsigned long long int murand_poisson (
murandStateScrambledSobol64_t ∗state,
double lambda)

使用SCRAMBLED_SOBOL64生成器返回一个泊松分布的unsigned long long int。

使用 state 中的SCRAMBLED_SOBOL64生成器生成并返回泊松分布的随机unsigned long long int值。state的位置增加一个位置。

参数 state - 要使用的state指针。 lambda - 泊松分布的lambda参数。

返回值 泊松分布的unsigned long long int。

murand_poisson()[6/8]

FQUALIFIERS unsigned int murand_poisson(
murandStateSobol32_t* state,
double lambda
);

使用SOBOL32生成器返回一个泊松分布的unsigned int。

使用 state 中的 Sobol32 生成器生成并返回泊松分布的随机unsigned int值。state的位置增加一个位置。

参数 state - 要使用的state指针。 lambda - 泊松分布的lambda参数。

返回值 泊松分布的unsigned int。

murand_poisson()[7/8]

FQUALIFIERS unsigned long long int murand_poisson(
murandStateSobol64_t* state,
double lambda
);

使用SOBOL64生成器返回一个泊松分布的unsigned long long int。

使用 state 中的 sobol64 生成器生成并返回泊松分布的随机unsigned long long int值。state的位置增加一个位置。

参数 state - 要使用的state指针。 lambda - 泊松分布的lambda参数。

返回值 泊松分布的unsigned long long int。

murand_poisson()[8/8]

FQUALIFIERS unsigned int murand_poisson(
murandStateXORWOW_t* state,
double lambda
);

使用XORWOW生成器返回一个泊松分布的 unsigned int。

使用 state 中的XORWOW生成器生成并返回泊松分布的随机 unsigned int 值。state 的位置会增加一个变量量。

参数

state - 要使用的state指针。

lambda - 泊松分布的lambda参数。

返回值

泊松分布的 unsigned int。

murand_uniform()[1/8]

FQUALIFIERS float murand_uniform(
murandStateMRG32k3a_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的MRG32K3A生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的state指针。

返回值

范围从(0; 1]的均匀分布 float 值。

murand_uniform()[2/8]

FQUALIFIERS float murand_uniform(
murandStateMtgp32_t* state
);

返回一个均匀分布的随机 float 值。

使用 state 中的 MTGP32 生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的 state 指针。

返回值

范围从(0; 1]的均匀分布 float 值。

murand_uniform()[3/8]

FQUALIFIERS float murand_uniform(
murandStatePhilox4_32_10_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的 Philox 生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的 state 指针。

返回值

范围从(0; 1]的均匀分布float值。

murand_uniform()[4/8]

FQUALIFIERS float murand_uniform(
murandStateScrambledSobol32_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的 SCRAMBLED_SOBOL32 生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的state指针。

返回值

范围从(0; 1]的均匀分布float值。

murand_uniform()[5/8]

FQUALIFIERS float murand_uniform(
murandStateScrambledSobol64_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的SCRAMBLED_SOBOL64生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的state指针。

返回值

范围从 (0; 1] 的均匀分布 float 值。

murand_uniform()[6/8]

FQUALIFIERS float murand_uniform(
murandStateSobol32_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的 Sobol32 生成器生成并返回一个均匀分布的float值,范围从(0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的state指针。

返回值

范围从 (0; 1]的均匀分布float值。

murand_uniform()[7/8]

FQUALIFIERS float murand_uniform(
murandStateSobol64_t* state
);

返回一个均匀分布的随机float值。

使用 state 中的 sobol64 生成器生成并返回一个均匀分布的float值,范围从(0; 1],并使生成器的位置增加一个。输出范围不包括0.0,包括1.0。

参数

state - 要使用的state指针。

返回值

范围从(0; 1]的均匀分布float值。

murand_uniform()[8/8]

FQUALIFIERS float murand_uniform(
murandStateXORWOW_t* state
);

返回一个均匀分布的随机 float 值。

使用 state 中的 XORWOW 生成器生成并返回一个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的state指针。

返回值

范围从 (0; 1] 的均匀分布float值。

murand_uniform2_double()

FQUALIFIERS double2 murand_uniform2_double(
murandStatePhilox4_32_10_t* state
);

返回两个均匀分布的随机 double 值。

使用 state 中的 Philox 生成器生成并返回两个均匀分布的 double 值,范围从 (0; 1],并使生成器的位置增加四个。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的 state 指针。

返回值

范围从 (0; 1] 的两个均匀分布 double 值,作为 double2 返回。

murand_uniform4()

FQUALIFIERS float4 murand_uniform4(
murandStatePhilox4_32_10_t* state
);

返回四个均匀分布的随机float值。

使用 state 中的 Philox 生成器生成并返回四个均匀分布的 float 值,范围从 (0; 1],并使生成器的位置增加四个。输出范围不包括 0.0f,包括 1.0f。

参数

state - 要使用的state指针。

返回值

范围从(0; 1]的四个均匀分布float值,作为float4返回。

murand_uniform_double()[1/8]

FQUALIFIERS double murand_uniform_double (
murandStateMRG32k3a_t ∗state)

返回一个均匀分布的随机 double 值。

使用 state 中的 MRG32K3A 生成器生成并返回一个均匀分布的 double 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的state指针。

注意

在这个实现中,返回的 double 值仅由 32个 随机位(一个 unsigned int 值)生成。

返回值

范围从 (0; 1] 的均匀分布 double 值。

murand_uniform_double()[2/8]

FQUALIFIERS double murand_uniform_double (
murandStateMtgp32_t ∗state)

返回一个均匀分布的随机 double 值。

使用 state 中的 MTGP32 生成器生成并返回一个均匀分布的 double 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0,包括1.0。

参数

state - 要使用的state指针。

注意

在这个实现中,返回的double值仅由32个随机位(一个 unsigned int 值)生成。

返回值

范围从 (0; 1]的均匀分布 double 值。

murand_uniform_double()[3/8]

FQUALIFIERS double murand_uniform_double (
murandStatePhilox4_32_10_t ∗state)

返回一个均匀分布的随机 double 值。

使用 state 中的 Philox 生成器生成并返回一个均匀分布的 double 值,范围从 (0; 1],并使生成器的位置增加两个。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的state指针。

返回值

范围从 (0; 1] 的均匀分布 double 值。

murand_uniform_double()[4/8]

FQUALIFIERS double murand_uniform_double (
murandStateScrambledSobol32_t ∗state)

返回一个均匀分布的随机 double 值。

使用 state 中的 SCRAMBLED_SOBOL32 生成器生成并返回一个均匀分布的 double 值,范围从 (0; 1],并使生成器的位置增加一个。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的 state 指针。

注意

在这个实现中,返回的 double 值仅由 32 个随机位(一个 unsigned int 值)生成。

返回值

范围从 (0; 1] 的均匀分布 double 值。

murand_uniform_double() [5/8]

FQUALIFIERS double murand_uniform_double (
murandStateScrambledSobol64_t ∗state)

返回一个均匀分布的随机双精度值。

使用状态中的 SCRAMBLED_SOBOL64 生成器生成并返回一个从 (0, 1] 范围内的均匀分布的双精度值,并使生成器的位置增加一。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的指针状态。

返回值

从 (0, 1] 范围内均匀分布的双精度值。

murand_uniform_double() [6/8]

FQUALIFIERS double murand_uniform_double (
murandStateSobol32_t ∗state)

返回一个均匀分布的随机双精度值。

使用状态中的 SOBOL32 生成器生成并返回一个从(0, 1]范围内的均匀分布的双精度值,并使生成器的位置增加一。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的指针状态。

注意

在此实现中,返回的双精度值仅由32个随机位(一个无符号整数值)生成。

返回值

从(0, 1]范围内均匀分布的双精度值。

murand_uniform_double() [7/8]

FQUALIFIERS double murand_uniform_double (
murandStateSobol64_t ∗state)

返回一个均匀分布的随机双精度值。

使用状态中的SOBOL64生成器生成并返回一个从(0, 1]范围内的均匀分布的双精度值,并使生成器的位置增加一。输出范围不包括0.0,包括1.0。

参数

state - 要使用的指针状态。

返回值

从 (0, 1] 范围内均匀分布的双精度值。

murand_uniform_double() [8/8]

FQUALIFIERS double murand_uniform_double (
murandStateXORWOW_t ∗state)

返回一个均匀分布的随机双精度值。

使用状态中的 MRG32K3A 生成器生成并返回一个从 (0, 1]范围内的均匀分布的双精度值,并使生成器的位置增加二。输出范围不包括 0.0,包括 1.0。

参数

state - 要使用的指针状态。

返回值

从(0, 1]范围内均匀分布的双精度值。

murandMakeMTGP32KernelState()

__host__ murandStatus_t murandMakeMTGP32KernelState (
murandStateMtgp32_t ∗d_state,
mtgp32_params_fast_t params[],
int n,
unsigned long long seed) [inline]

初始化MTGP32状态。

通过在主机内存中分配一个状态数组,初始化该数组,并将结果复制到设备内存中,来在主机端初始化MTGP32状态。

参数

d_state - 设备内存中状态数组的指针。

params - 主机内存中mtgp32_params_fast_t类型的数组指针。

n - 要初始化的状态数量。

seed - 种子值。

返回值

MURAND_STATUS_SUCCESS
如果状态成功初始化。

MURAND_STATUS_ALLOCATION_FAILED
如果状态无法初始化。