cupy.random.Generator#

class cupy.random.Generator(bit_generator)[source]#

BitGenerator 的容器。

Generator 提供了多种方法,用于生成从各种概率分布中抽取的随机数。除了特定分布的参数外,每个方法都接受一个关键字参数 size,其默认值为 None。如果 sizeNone,则生成并返回一个单一值。如果 size 是一个整数,则返回一个填充了生成值的 1 维数组。如果 size 是一个元组,则填充并返回具有该形状的数组。函数 numpy.random.default_rng() 将实例化一个使用 numpy 默认 BitGeneratorGenerator。**不提供兼容性保证** Generator 不提供版本兼容性保证。特别是,随着更好算法的发展,位流可能会改变。

参数:

bit_generator – (cupy.random.BitGenerator): 用作核心生成器的 BitGenerator。

方法

beta(self, a, b, size=None, dtype=numpy.float64)#

Beta 分布。

返回从 beta 分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{x^{\alpha-1}(1-x)^{\beta-1}}{B(\alpha,\beta)}.\]
参数:
  • a (float) – beta 分布的参数 \(\alpha\)

  • b (float) – beta 分布的参数 \(\beta\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

  • dtype – 数据类型说明符。只允许 numpy.float32numpy.float64 类型。

返回:

从 beta 分布中抽取的样本。

返回类型:

cupy.ndarray

binomial(self, n, p, size=None)#

二项分布。

返回从二项分布中抽取的样本数组。其概率质量函数定义为

\[f(x) = \binom{n}{x}p^x(1-p)^(n-x).\]
参数:
  • n (intcupy.ndarray,类型为 ints) – 分布的参数,>= 0。也接受浮点数,但它们将被截断为整数。

  • p (floatcupy.ndarray,类型为 floats) – 分布的参数,>= 0 且 <= 1。

  • size (int整数元组, 可选) – 输出数组的形状。如果为 None (默认),则在 np 均为标量时返回单个值。否则,将抽取 cupy.broadcast(n, p).size 个样本。

返回:

从二项分布中抽取的样本。

返回类型:

cupy.ndarray

chisquare(self, df, size=None)#

卡方分布。

返回从卡方分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{(1/2)^{k/2}}{\Gamma(k/2)}x^{k/2-1}e^{-x/2}.\]
参数:
  • df (float类似数组,类型为 floats) – 自由度 \(k\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

返回:

从卡方分布中抽取的样本。

返回类型:

cupy.ndarray

dirichlet(self, alpha, size=None)#

Dirichlet 分布。

返回从 Dirichlet 分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{\Gamma(\sum_{i=1}^K\alpha_i)} {\prod_{i=1}^{K}\Gamma(\alpha_i)} \prod_{i=1}^Kx_i^{\alpha_i-1}.\]
参数:
  • alpha (数组) – Dirichlet 分布的参数 \(\alpha\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个形状与 alpha.shape 相同的数组。

返回:

从 Dirichlet 分布中抽取的样本。

返回类型:

cupy.ndarray

exponential(self, scale=1.0, size=None)#

指数分布。

返回从指数分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{1}{\beta}\exp (-\frac{x}{\beta}).\]
参数:
  • scale (float类似数组,类型为 floats) – 尺度参数 \(\beta\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

返回:

从指数分布中抽取的样本。

返回类型:

cupy.ndarray

f(self, dfnum, dfden, size=None)#

F 分布。

返回从 f 分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{1}{B(\frac{d_1}{2},\frac{d_2}{2})} \left(\frac{d_1}{d_2}\right)^{\frac{d_1}{2}} x^{\frac{d_1}{2}-1} \left(1+\frac{d_1}{d_2}x\right) ^{-\frac{d_1+d_2}{2}}.\]
参数:
  • dfnum (float类似数组,类型为 floats) – 分子自由度,\(d_1\)

  • dfden (float类似数组,类型为 floats) – 分母自由度,\(d_2\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

返回:

从 f 分布中抽取的样本。

返回类型:

cupy.ndarray

gamma(self, shape, scale=1.0, size=None)#

Gamma 分布。

返回从 gamma 分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{1}{\Gamma(k)\theta^k}x^{k-1}e^{-x/\theta}.\]
参数:
  • shape (float类似数组,类型为 float) – gamma 分布的形状。必须是非负数。

  • scale (float类似数组,类型为 float) – gamma 分布的尺度。必须是非负数。默认值为 1。

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

geometric(self, p, size=None)#

几何分布。

返回从几何分布中抽取的样本数组。其概率质量函数定义为

\[f(x) = p(1-p)^{k-1}.\]
参数:
  • p (floatcupy.ndarray,类型为 floats) – 几何分布的成功概率。

  • size (int整数元组, 可选) – 输出数组的形状。如果为 None (默认),则在 p 为标量时返回单个值。否则,将抽取 p.size 个样本。

返回:

从几何分布中抽取的样本。

返回类型:

cupy.ndarray

hypergeometric(self, ngood, nbad, nsample, size=None)#

超几何分布。

返回从超几何分布中抽取的样本数组。其概率质量函数定义为

\[f(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}}.\]
参数:
  • ngood (int类似数组,类型为 ints) – 超几何分布的参数 \(n\)

  • nbad (int类似数组,类型为 ints) – 超几何分布的参数 \(m\)

  • nsample (int类似数组,类型为 ints) – 超几何分布的参数 \(N\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

返回:

从超几何分布中抽取的样本。

返回类型:

cupy.ndarray

integers(self, low, high=None, size=None, dtype=numpy.int64, endpoint=False)#

返回一个标量或一个整数值数组,其范围在一个区间内。

返回值的每个元素都是从区间 [low, high)[low, high] 上的均匀分布中独立采样的。

参数:
  • low (int) – 如果 high 不是 None,则它是区间的下界。否则,它是区间的**上界**,区间的下界设置为 0

  • high (int) – 区间的上界。

  • size (Noneint整数元组) – 返回值的形状。

  • dtype – 数据类型说明符。

  • endpoint (bool) – 如果为 True,则从 [low, high] 中采样。默认为 False

返回:

如果 size 为 None,则返回单个整数样本。如果 size 为整数,则返回长度为 size 的 1 维数组。否则,返回形状由 size 指定的数组。

返回类型:

intcupy.ndarray,类型为 ints

logseries(self, p, size=None)#

对数序列分布。

返回从对数序列分布中抽取的样本数组。其概率质量函数定义为

\[f(x) = \frac{-p^x}{x\ln(1-p)}.\]
参数:
  • p (floatcupy.ndarray,类型为 floats) – 对数序列分布的参数。必须在 (0, 1) 范围内。

  • size (int整数元组, 可选) – 输出数组的形状。如果为 None (默认),则在 p 为标量时返回单个值。否则,将抽取 p.size 个样本。

返回:

从对数序列分布中抽取的样本。

返回类型:

cupy.ndarray

poisson(self, lam=1.0, size=None)#

泊松分布。

返回从泊松分布中抽取的样本数组。其概率质量函数定义为

\[f(x) = \frac{\lambda^xe^{-\lambda}}{x!}.\]
参数:
  • lam (float类似数组,类型为 floats) – 泊松分布的参数 \(\lambda\)

  • size (int整数元组) – 数组的形状。如果为 None,此函数将生成一个形状与 lam.shape 相同的数组。

返回:

从泊松分布中抽取的样本。

返回类型:

cupy.ndarray

power(self, a, size=None)#

幂分布。

返回从幂分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = ax^{a-1}.\]
参数:
  • a (float类似数组,类型为 floats) – 幂分布的参数 \(a\)

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

返回:

从幂分布中抽取的样本。

返回类型:

cupy.ndarray

random(self, size=None, dtype=numpy.float64, out=None)#

返回半开区间 [0.0, 1.0) 内的随机浮点数。

结果来自上述区间上的“连续均匀”分布。要采样 \(Unif[a, b), b > a\),将 random 的输出乘以 (b-a) 并加上 a

(b - a) * random() + a
参数:
  • size (Noneint整数元组) – 返回值的形状。

  • dtype – 数据类型说明符。

  • out (cupy.ndarray, 可选) – 如果指定,值将写入此数组

返回:

从 [0, 1) 区间均匀抽取的样本

返回类型:

cupy.ndarray

standard_exponential(self, size=None, dtype=numpy.float64, method='inv', out=None)#

标准指数分布。

返回从标准指数分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = e^{-x}.\]
参数:
  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

  • dtype – 数据类型说明符。只允许 numpy.float32numpy.float64 类型。

  • method (str) – 采样方法。目前只支持 'inv',即从默认的逆 CDF 采样。

  • out (cupy.ndarray, 可选) – 如果指定,值将写入此数组

返回:

从标准指数分布中抽取的样本。

返回类型:

cupy.ndarray

standard_gamma(self, shape, size=None, dtype=numpy.float64, out=None)#

标准 gamma 分布。

返回从标准 gamma 分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{1}{\Gamma(k)}x^{k-1}e^{-x}.\]
参数:
  • shape (float类似数组,类型为 float) – gamma 分布的形状。必须是非负数。

  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

  • dtype – 数据类型说明符。

  • out (cupy.ndarray, 可选) – 如果指定,值将写入此数组

standard_normal(self, size=None, dtype=numpy.float64, out=None)#

标准正态分布。

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

参数:
  • size (int整数元组) – 数组的形状。如果为 None,则生成一个零维数组。

  • dtype – 数据类型说明符。

  • out (cupy.ndarray, 可选) – 如果指定,值将写入此数组

返回:

从标准正态分布中抽取的样本。

返回类型:

cupy.ndarray

uniform(self, low=0.0, high=1.0, size=None, dtype=numpy.float64)#

从均匀分布中抽取样本。样本均匀分布在半开区间 [low, high) (包含 low,但不包含 high) 上。换句话说,给定区间内的任何值被 uniform 抽取的可能性相等。由于等式 low + (high-low) * random() 中的浮点舍入,返回的浮点数数组可能包含 high 界限。high - low 必须是非负数。默认值为 1.0。

参数:
  • low (float类似数组,类型为 floats, 可选) – 输出区间的下边界。生成的所有值将大于或等于 low。默认值为 0。

  • high (float类似数组,类型为 floats) – 输出区间的上边界。生成的所有值将小于 high。由于等式 low + (high-low) * random() 中的浮点舍入,返回的浮点数数组可能包含 high 界限。high - low 必须是非负数。默认值为 1.0。

  • size (int整数元组, 可选) – 输出形状。如果给定的形状是例如 (m, n, k),则抽取 m * n * k 个样本。如果 size 为 None (默认),则在 lowhigh 均为标量时返回单个值。否则,将抽取 cupy.broadcast(low, high).size 个样本。

返回:

out – 从参数化均匀分布中抽取的样本。

返回类型:

ndarray 或 标量

另请参阅

-

meth:numpy.random.Generator.uniform

-

meth:integers: 离散均匀分布,生成整数。

-

meth:random: 在 [0, 1) 上均匀分布的浮点数。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。