随机采样 (cupy.random)#

cupy.randomnumpy.random 之间的差异

  • cupy.random 下的大多数函数支持 dtype 选项,而对应的 NumPy API 中不存在此选项。此选项可以直接生成 float32 值,且没有额外的空间开销。

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

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

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

新随机生成器 API#

随机生成器#

default_rng([seed])

使用默认的 BitGenerator (XORWOW) 构建新的 Generator。

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])

Dirichlet 分布。

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])

Laplace 分布。

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

Logistic 分布。

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])

Pareto II 或 Lomax 分布。

permutation(a)

返回一个置换范围或数组的置换。

poisson([lam, size, dtype])

Poisson 分布。

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])

Rayleigh 分布。

sample([size, dtype])

返回区间 [0, 1) 上的随机值数组。

seed([seed])

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

shuffle(a)

打乱数组。

standard_cauchy([size, dtype])

标准 Cauchy 分布。

standard_exponential([size, dtype])

标准指数分布。

standard_gamma(shape[, size, dtype])

标准 Gamma 分布。

standard_normal([size, dtype])

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

standard_t(df[, size, dtype])

标准 Student's 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])

Weibull 分布。

zipf(a[, size, dtype])

Zipf 分布。

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

get_random_state()

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

set_random_state(rs)

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