随机采样 (cupy.random)#

numpy.random 相比,cupy.random 的不同之处:

  • cupy.random 下的多数函数支持 dtype 选项,这在相应的 NumPy API 中并不存在。此选项使得可以直接生成 float32 值,而无需任何空间开销。

  • cupy.random.default_rng() 默认使用 XORWOW 位生成器。

  • 随机状态无法序列化。详情请参见下文描述。

  • CuPy 不保证在主要版本之间使用相同的随机数生成器。这意味着由新主要版本生成的 cupy.random 的数字可能与之前的版本不同,即使使用相同的种子和分布。

新的随机数生成器 API#

随机数生成器#

default_rng([seed])

使用默认的 BitGenerator (XORWOW) 构造一个新的生成器。

Generator(bit_generator)

BitGenerators 的容器。

比特生成器#

BitGenerator([seed])

通用 BitGenerator。

CuPy 提供了以下位生成器实现:

XORWOW([seed, size])

使用 cuRAND XORWOW 设备生成器的 BitGenerator。

MRG32k3a([seed, size])

使用 cuRAND MRG32k3a 设备生成器的 BitGenerator。

Philox4x3210([seed, size])

使用 cuRAND Philox4x3210 设备生成器的 BitGenerator。

传统随机生成#

RandomState([seed, method])

伪随机数生成器的可移植容器。

cupy.random 中的函数#

beta(a, b[, size, dtype])

Beta 分布。

binomial(n, p[, size, dtype])

二项分布。

bytes(length)

返回随机字节。

chisquare(df[, size, dtype])

卡方分布。

choice(a[, size, replace, p])

返回从给定的一维数组中随机抽取的值的数组。

dirichlet(alpha[, size, dtype])

狄利克雷分布。

exponential(scale[, size, dtype])

指数分布。

f(dfnum, dfden[, size, dtype])

F 分布。

gamma(shape[, scale, size, dtype])

Gamma 分布。

geometric(p[, size, dtype])

几何分布。

gumbel([loc, scale, size, dtype])

返回从Gumbel分布中抽取的样本数组。

hypergeometric(ngood, nbad, nsample[, size, ...])

超几何分布。

laplace([loc, scale, size, dtype])

拉普拉斯分布。

logistic([loc, scale, size, dtype])

逻辑分布。

lognormal([mean, sigma, size, dtype])

返回从对数正态分布中抽取的样本数组。

logseries(p[, size, dtype])

日志系列分布。

multinomial(n, pvals[, size])

从多项分布中返回一个数组。

multivariate_normal(mean, cov[, size, ...])

多元正态分布。

negative_binomial(n, p[, size, dtype])

负二项分布。

noncentral_chisquare(df, nonc[, size, dtype])

非中心卡方分布。

noncentral_f(dfnum, dfden, nonc[, size, dtype])

非中心 F 分布。

normal([loc, scale, size, dtype])

返回一个正态分布样本的数组。

pareto(a[, size, dtype])

帕累托 II 型或 Lomax 分布。

permutation(a)

返回一个排列的范围或数组的排列。

poisson([lam, size, dtype])

泊松分布。

power(a[, size, dtype])

电力分配。

rand(*size, **kwarg)

返回一个在区间 [0, 1) 上均匀分布的随机值数组。

randint(low[, high, size, dtype])

返回一个标量或一个整数值数组,范围在 [low, high) 之间。

randn(*size, **kwarg)

返回一个标准正态随机值的数组。

random([size, dtype])

返回一个在区间 [0, 1) 内的随机值数组。

random_integers(low[, high, size])

返回一个标量或一个在 [low, high] 范围内的整数值数组

random_sample([size, dtype])

返回一个在区间 [0, 1) 内的随机值数组。

ranf([size, dtype])

返回一个在区间 [0, 1) 内的随机值数组。

rayleigh([scale, size, dtype])

瑞利分布。

sample([size, dtype])

返回一个在区间 [0, 1) 内的随机值数组。

seed([seed])

使用种子重置随机数生成器的状态。

shuffle(a)

打乱数组。

standard_cauchy([size, dtype])

标准柯西分布。

standard_exponential([size, dtype])

标准指数分布。

standard_gamma(shape[, size, dtype])

标准伽马分布。

standard_normal([size, dtype])

返回从标准正态分布中抽取的样本数组。

standard_t(df[, size, dtype])

标准学生 t 分布。

triangular(left, mode, right[, size, dtype])

三角分布。

uniform([low, high, size, dtype])

返回一个在区间内均匀分布的样本数组。

vonmises(mu, kappa[, size, dtype])

von Mises 分布。

wald(mean, scale[, size, dtype])

Wald 分布。

weibull(a[, size, dtype])

威布尔分布。

zipf(a[, size, dtype])

齐普夫分布。

CuPy 目前不提供 cupy.random.get_statecupy.random.set_state。请改用以下 CuPy 特定的 API。请注意,这些函数使用 cupy.random.RandomState 实例来表示内部状态,该状态无法序列化。

get_random_state()

获取当前设备的随机数生成器的状态。

set_random_state(rs)

设置当前设备的随机数生成器的状态。