cupy.random.Generator#

class cupy.random.Generator(bit_generator)[源代码]#

BitGenerators 的容器。

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

参数:

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

方法

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

Beta 分布。

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

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

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

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

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

返回:

从 beta 分布中抽取的样本。

返回类型:

cupy.ndarray

参见

numpy.random.Generator.beta()

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

二项分布。

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

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

  • p (float or cupy.ndarray of floats) – 分布的参数,>= 0 且 <= 1。

  • size (int or tuple of ints, optional) – 输出数组的形状。如果 None (默认),当 np 都是标量时,返回一个单一值。否则,将绘制 cupy.broadcast(n, p).size 个样本。

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.binomial()

chisquare(self, df, size=None)#

卡方分布。

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

\[f(x) = \frac{(1/2)^{k/2}}{\Gamma(k/2)}x^{k/2-1}e^{-x/2}.\]
参数:
  • df (float or array_like of floats) – 自由度 \(k\)

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

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.chisquare()

dirichlet(self, alpha, size=None)#

狄利克雷分布。

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

\[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 (array) – 狄利克雷分布的参数 \(\alpha\)

  • size (int or tuple of ints) – 数组的形状。如果为 None,则生成 alpha.shape 的数组。

返回:

从狄利克雷分布中抽取的样本。

返回类型:

cupy.ndarray

参见

numpy.random.Generator.dirichlet()

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

指数分布。

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

\[f(x) = \frac{1}{\beta}\exp (-\frac{x}{\beta})。\]
参数:
  • scale (float or array_like of floats) – 尺度参数 \(\beta\)

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

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.exponential()

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 or array_like of floats) – 分子中的自由度,\(d_1\)

  • dfden (float or array_like of floats) – 分母中的自由度,\(d_2\)

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

返回:

从 f 分布中抽取的样本。

返回类型:

cupy.ndarray

参见

numpy.random.Generator.f()

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

Gamma 分布。

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

\[f(x) = \frac{1}{\Gamma(k)\theta^k}x^{k-1}e^{-x/\theta}。\]
参数:
  • shape (float or array_like of float) – 伽马分布的形状。必须是非负的。

  • scale (float or array_like of float) – 伽马分布的尺度。必须为非负数。默认值为1。

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

参见

  • numpy.random.Generator.gamma()

geometric(self, p, size=None)#

几何分布。

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

\[f(x) = p(1-p)^{k-1}。\]
参数:
  • p (float or cupy.ndarray of floats) – 几何分布的成功概率。

  • size (int or tuple of ints, optional) – 输出数组的形状。如果为 None (默认),当 p 是标量时返回单个值。否则,绘制 p.size 个样本。

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.geometric()

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

超几何分布。

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

\[f(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}}.\]
参数:
  • ngood (int or array_like of ints) – 超几何分布的参数 \(n\)

  • nbad (int or array_like of ints) – 超几何分布的参数 \(m\)

  • nsample (int or array_like of ints) – 超几何分布的参数 \(N\)

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

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.hypergeometric()

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

返回一个区间内的标量或整数值数组。

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

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

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

  • size (None or int or tuple of ints) – 返回值的形状。

  • dtype – 数据类型说明符。

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

返回:

如果 size 是 None,则采样单个整数。如果 size 是整数,则是长度为 size 元素的 1D 数组。否则,它是形状由 size 指定的数组。

返回类型:

int or cupy.ndarray of ints

参见

  • numpy.random.Generator.integers()

logseries(self, p, size=None)#

日志系列分布。

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

\[f(x) = \frac{-p^x}{x\ln(1-p)}。\]
参数:
  • p (float or cupy.ndarray of floats) – 对数级数分布的参数。必须在范围 (0, 1) 内。

  • size (int or tuple of ints, optional) – 输出数组的形状。如果为 None (默认),当 p 是标量时返回单个值。否则,绘制 p.size 个样本。

返回:

从日志系列分布中抽取的样本。

返回类型:

cupy.ndarray

参见

numpy.random.Generator.logseries()

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

泊松分布。

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

\[f(x) = \frac{\lambda^xe^{-\lambda}}{x!}.\]
参数:
  • lam (float or array_like of floats) – 泊松分布的参数 \(\lambda\)

  • size (int or tuple of ints) – 数组的形状。如果 None,此函数生成一个形状为 lam.shape 的数组。

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.poisson()

power(self, a, size=None)#

电力分配。

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

\[f(x) = ax^{a-1}。\]
参数:
  • a (float or array_like of floats) – 电力分配的参数 \(a\)

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

返回:

从电源分配中抽取的样本。

返回类型:

cupy.ndarray

参见

numpy.random.Generator.power()

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 (None or int or tuple of ints) – 返回值的形状。

  • dtype – 数据类型说明符。

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

返回:

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

返回类型:

cupy.ndarray

参见

  • numpy.random.Generator.random()

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

标准指数分布。

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

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

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

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

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

返回:

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

返回类型:

cupy.ndarray

参见

numpy.random.Generator.standard_exponential()

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

标准伽马分布。

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

\[f(x) = \frac{1}{\Gamma(k)}x^{k-1}e^{-x}。\]
参数:
  • shape (float or array_like of float) – 伽马分布的形状。必须是非负的。

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

  • dtype – 数据类型说明符。

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

参见

  • numpy.random.Generator.standard_gamma()

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

标准正态分布。

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

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

  • dtype – 数据类型说明符。

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

返回:

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

返回类型:

cupy.ndarray

参见

  • numpy.random.Generator.standard_normal()

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

从均匀分布中抽取样本。样本在半开区间 [low, high) 上均匀分布(包括 low,但不包括 high)。换句话说,给定区间内的任何值被 uniform 抽中的概率是相等的。

参数:
  • low (float or array_like of floats, optional) – 输出区间的下界。所有生成的值都将大于或等于低。默认值为 0。

  • high (float or array_like of floats) – 输出区间的上边界。生成的所有值都将小于 high。由于方程 low + (high-low) * random() 中的浮点数舍入,高限制可能包含在返回的浮点数数组中。high - low 必须是非负的。默认值是 1.0。

  • size (int or tuple of ints, optional) – 输出形状。如果给定的形状是,例如,(m, n, k),那么会抽取 m * n * k 个样本。如果 size 是 None``(默认),当 ``lowhigh 都是标量时,返回一个单一值。否则,会抽取 cupy.broadcast(low, high).size 个样本。

返回:

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

返回类型:

ndarray or scalar

参见

-

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。