
    
9jP                       S SK Jr  S SKJr  S SKJr  S\4S jrS\4S jr	S\4S jr
S\4S jrS\4S	 jrS\4S
 jrSS\4S jrS,S jrSSS\4S jrS,S jrSSS\4S jrSSS\4S jrSSS\4S jrS,S jrS\4S jrSSSS\4S jrSSS\4S jrS\4S jrS\4S jrS\4S jrS-S jrS\4S jrSS\4S  jrS\4S! jrS\4S" jr S\4S# jr!S\4S$ jr"S\4S% jr#S\4S& jr$SSS\4S' jr%S\4S( jr&S\4S) jr'S\4S* jr(S\4S+ jr)g).    )annotations)
_generator)_utilNc                P    [         R                  " 5       nUR                  XX#5      $ )a  Beta distribution.

Returns an array of samples drawn from the beta distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{x^{\alpha-1}(1-x)^{\beta-1}}{B(\alpha,\beta)}.

Args:
    a (float): Parameter of the beta distribution :math:`\alpha`.
    b (float): Parameter of the beta distribution :math:`\beta`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the beta distribution.

.. seealso::
    :func:`numpy.random.beta`
)r   get_random_statebeta)absizedtyperss        T/home/wildlama/miniconda3/lib/python3.13/site-packages/cupy/random/_distributions.pyr   r   
   s#    . 
	$	$	&B771%%    c                P    [         R                  " 5       nUR                  XX#5      $ )a  Binomial distribution.

Returns an array of samples drawn from the binomial distribution. Its
probability mass function is defined as

.. math::
    f(x) = \binom{n}{x}p^x(1-p)^{n-x}.

Args:
    n (int): Trial number of the binomial distribution.
    p (float): Success probability of the binomial distribution.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the binomial distribution.

.. seealso::
    :func:`numpy.random.binomial`
)r   r   binomialnpr   r   r   s        r   r   r   %   s#    . 
	$	$	&B;;qT))r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Chi-square distribution.

Returns an array of samples drawn from the chi-square distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{(1/2)^{k/2}}{\Gamma(k/2)}x^{k/2-1}e^{-x/2}.

Args:
    df (int or array_like of ints): Degree of freedom :math:`k`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the chi-square distribution.

.. seealso::
    :func:`numpy.random.chisquare`
)r   r   	chisquaredfr   r   r   s       r   r   r   @   s#    , 
	$	$	&B<<%((r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Dirichlet distribution.

Returns an array of samples drawn from the dirichlet distribution. Its
probability density function is defined as

.. math::
    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}.

Args:
    alpha (array): Parameters of the dirichlet distribution
        :math:`\alpha`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the dirichlet distribution.

.. seealso::
    :func:`numpy.random.dirichlet`
)r   r   	dirichlet)alphar   r   r   s       r   r   r   Z   s#    2 
	$	$	&B<<U++r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Exponential distribution.

Returns an array of samples drawn from the exponential distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{1}{\beta}\exp (-\frac{x}{\beta}).

Args:
    scale (float or array_like of floats): The scale parameter
        :math:`\beta`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the exponential distribution.

.. seealso::
    :func:`numpy.random.exponential`
)r   r   exponentialscaler   r   r   s       r   r   r   w   s#    . 
	$	$	&B>>%u--r   c                P    [         R                  " 5       nUR                  XX#5      $ )a|  F distribution.

Returns an array of samples drawn from the f distribution. Its probability
density function is defined as

.. math::
    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}}.

Args:
    dfnum (float or array_like of floats): Parameter of the f distribution
        :math:`d_1`.
    dfden (float or array_like of floats): Parameter of the f distribution
        :math:`d_2`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the f distribution.

.. seealso::
    :func:`numpy.random.f`
)r   r   f)dfnumdfdenr   r   r   s        r   r!   r!      s#    : 
	$	$	&B44d**r         ?c                P    [         R                  " 5       nUR                  XX#5      $ )a  Gamma distribution.

Returns an array of samples drawn from the gamma distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{1}{\Gamma(k)\theta^k}x^{k-1}e^{-x/\theta}.

Args:
    shape (array): Parameter of the gamma distribution :math:`k`.
    scale (array): Parameter of the gamma distribution :math:`\theta`
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:cupy.ndarray: Samples drawn from the gamma distribution.

.. seealso::
    :func:`numpy.random.gamma`
)r   r   gamma)shaper   r   r   r   s        r   r&   r&      s#    , 
	$	$	&B88E$..r   c                P    [         R                  " 5       nUR                  XU5      $ )aT  Geometric distribution.

Returns an array of samples drawn from the geometric distribution. Its
probability mass function is defined as

.. math::
    f(x) = p(1-p)^{k-1}.

Args:
    p (float): Success probability of the geometric distribution.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the geometric distribution.

.. seealso::
    :func:`numpy.random.geometric`
)r   r   	geometricr   r   r   r   s       r   r)   r)      s#    , 
	$	$	&B<<''r   g        c                P    [         R                  " 5       nUR                  XX#5      $ )a  Returns an array of samples drawn from a Gumbel distribution.

The samples are drawn from a Gumbel distribution with location ``loc``
and scale ``scale``.
Its probability density function is defined as

.. math::
   f(x) = \frac{1}{\eta}            \exp\left\{ - \frac{x - \mu}{\eta} \right\}            \exp\left[-\exp\left\{-\frac{x - \mu}{\eta}            \right\}\right],

where :math:`\mu` is ``loc`` and :math:`\eta` is ``scale``.

Args:
    loc (float): The location of the mode :math:`\mu`.
    scale (float): The scale parameter :math:`\eta`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the Gumbel distribution.

.. seealso::
    :func:`numpy.random.gumbel`
)r   r   gumbellocr   r   r   r   s        r   r,   r,      s#    : 
	$	$	&B99S--r   c                R    [         R                  " 5       nUR                  XX#U5      $ )a  hypergeometric distribution.

Returns an array of samples drawn from the hypergeometric distribution. Its
probability mass function is defined as

.. math::
    f(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}}.

Args:
    ngood (int or array_like of ints): Parameter of the hypergeometric
        distribution :math:`n`.
    nbad (int or array_like of ints): Parameter of the hypergeometric
        distribution :math:`m`.
    nsample (int or array_like of ints): Parameter of the hypergeometric
        distribution :math:`N`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the hypergeometric distribution.

.. seealso::
    :func:`numpy.random.hypergeometric`
)r   r   hypergeometric)ngoodnbadnsampler   r   r   s         r   r0   r0     s'    6 
	$	$	&BU'??r   c                P    [         R                  " 5       nUR                  XX#5      $ )a  Logistic distribution.

Returns an array of samples drawn from the logistic distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{e^{-(x-\mu)/s}}{s(1+e^{-(x-\mu)/s})^2}.

Args:
    loc (float): The location of the mode :math:`\mu`.
    scale (float): The scale parameter :math:`s`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the logistic distribution.

.. seealso::
    :func:`numpy.random.logistic`
)r   r   logisticr-   s        r   r5   r5   '  s#    . 
	$	$	&B;;s4//r   c                P    [         R                  " 5       nUR                  XX#5      $ )a  Laplace distribution.

Returns an array of samples drawn from the laplace distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{1}{2b}\exp\left(-\frac{|x-\mu|}{b}\right).

Args:
    loc (float): The location of the mode :math:`\mu`.
    scale (float): The scale parameter :math:`b`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the laplace distribution.

.. seealso::
    :func:`numpy.random.laplace`
)r   r   laplacer-   s        r   r7   r7   B  s#    . 
	$	$	&B::c$..r   c                L    [         R                  " 5       nUR                  XX#S9$ )a  Returns an array of samples drawn from a log normal distribution.

The samples are natural log of samples drawn from a normal distribution
with mean ``mean`` and deviation ``sigma``.

Args:
    mean (float): Mean of the normal distribution.
    sigma (float): Standard deviation of the normal distribution.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the log normal distribution.

.. seealso:: :func:`numpy.random.lognormal`

r   r   )r   r   	lognormal)meansigmar   r   r   s        r   r:   r:   ]  s%    ( 
	$	$	&B<<$<<<r   c                L    [         R                  " 5       nUR                  XUS9$ )a^  Log series distribution.

Returns an array of samples drawn from the log series distribution. Its
probability mass function is defined as

.. math::
   f(x) = \frac{-p^x}{x\ln(1-p)}.

Args:
    p (float): Parameter of the log series distribution :math:`p`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the log series distribution.

.. seealso:: :func:`numpy.random.logseries`

r9   )r   r   	logseriesr*   s       r   r>   r>   u  s%    , 
	$	$	&B<<E<22r   c                L    [         R                  " 5       nUR                  XX#S9$ )a  Negative binomial distribution.

Returns an array of samples drawn from the negative binomial distribution.
Its probability mass function is defined as

.. math::
    f(x) = \binom{x + n - 1}{n - 1}p^n(1-p)^{x}.

Args:
    n (int): Parameter of the negative binomial distribution :math:`n`.
    p (float): Parameter of the negative binomial distribution :math:`p`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the negative binomial distribution.

.. seealso::
    :func:`numpy.random.negative_binomial`
r9   )r   r   negative_binomialr   s        r   r@   r@     s(    . 
	$	$	&B4==r   ignoreg:0yE>choleskyc           	         [         R                  " S5        [        R                  " 5       nUR	                  XX#XEU5      $ )a	  Multivariate normal distribution.

Returns an array of samples drawn from the multivariate normal
distribution. Its probability density function is defined as

.. math::
   f(x) = \frac{1}{(2\pi|\Sigma|)^(n/2)}            \exp\left(-\frac{1}{2}            (x-\mu)^{\top}\Sigma^{-1}(x-\mu)\right).

Args:
    mean (1-D array_like, of length N): Mean of the multivariate normal
        distribution :math:`\mu`.
    cov (2-D array_like, of shape (N, N)): Covariance matrix
        :math:`\Sigma` of the multivariate normal distribution. It must be
        symmetric and positive-semidefinite for proper sampling.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    check_valid ('warn', 'raise', 'ignore'): Behavior when the covariance
        matrix is not positive semidefinite.
    tol (float): Tolerance when checking the singular values in
        covariance matrix.
    method : { 'cholesky', 'eigh', 'svd'}, optional
        The cov input is used to compute a factor matrix A such that
        ``A @ A.T = cov``. This argument is used to select the method
        used to compute the factor matrix A. The default method 'cholesky'
        is the fastest, while 'svd' is the slowest but more robust than
        the fastest method. The method `eigh` uses eigen decomposition to
        compute A and is faster than svd but slower than cholesky.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the multivariate normal distribution.

.. note:: Default `method` is set to fastest, 'cholesky', unlike numpy
    which defaults to 'svd'. Cholesky decomposition in CuPy will fail
    silently if the input covariance matrix is not positive definite and
    give invalid results, unlike in numpy, where an invalid covariance
    matrix will raise an exception. Setting `check_valid` to 'raise' will
    replicate numpy behavior by checking the input, but will also force
    device synchronization. If validity of input is unknown, setting
    `method` to 'einh' or 'svd' and `check_valid` to 'warn' will use
    cholesky decomposition for positive definite matrices, and fallback to
    the specified `method` for other matrices (i.e., not positive
    semi-definite), and will warn if decomposition is suspect.

.. seealso:: :func:`numpy.random.multivariate_normal`

zcupy.random.multivariate_normal)r   experimentalr   r   multivariate_normal)r;   covr   check_validtolmethodr   r   s           r   rE   rE     s>    h 
89		$	$	&B!!4c5: :r   c                P    [         R                  " 5       nUR                  XX#5      $ )a1  Returns an array of normally distributed samples.

Args:
    loc (float or array_like of floats): Mean of the normal distribution.
    scale (float or array_like of floats):
        Standard deviation of the normal distribution.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Normally distributed samples.

.. seealso:: :func:`numpy.random.normal`

)r   r   normalr-   s        r   rK   rK     s#    $ 
	$	$	&B99S--r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Pareto II or Lomax distribution.

Returns an array of samples drawn from the Pareto II distribution. Its
probability density function is defined as

.. math::
    f(x) = \alpha(1+x)^{-(\alpha+1)}.

Args:
    a (float or array_like of floats): Parameter of the Pareto II
        distribution :math:`\alpha`.
    size (int or tuple of ints): The shape of the array. If ``None``, this
        function generate an array whose shape is `a.shape`.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the Pareto II distribution.

.. seealso:: :func:`numpy.random.pareto`
)r   r   paretor	   r   r   r   s       r   rM   rM     s#    , 
	$	$	&B99Qe$$r   c                L    [         R                  " 5       nUR                  XX#S9$ )a  Noncentral chisquare distribution.

Returns an array of samples drawn from the noncentral chisquare
distribution. Its probability density function is defined as

.. math::
   f(x) = \frac{1}{2}e^{-(x+\lambda)/2} \
    \left(\frac{x}{\lambda}\right)^{k/4 - 1/2} \
    I_{k/2 - 1}(\sqrt{\lambda x}),

where :math:`I` is the modified Bessel function of the first kind.

Args:
    df (float): Parameter of the noncentral chisquare distribution
        :math:`k`.
    nonc (float): Parameter of the noncentral chisquare distribution
        :math:`\lambda`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the noncentral chisquare distribution.

.. seealso::
    :func:`numpy.random.noncentral_chisquare`
r9   )r   r   noncentral_chisquare)r   noncr   r   r   s        r   rP   rP     s(    : 
	$	$	&B""2$"DDr   c                N    [         R                  " 5       nUR                  XX#US9$ )a  Noncentral F distribution.

Returns an array of samples drawn from the noncentral F
distribution.

Reference: https://en.wikipedia.org/wiki/Noncentral_F-distribution

Args:
    dfnum (float): Parameter of the noncentral F distribution.
    dfden (float): Parameter of the noncentral F distribution.
    nonc (float): Parameter of the noncentral F distribution.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the noncentral F distribution.

.. seealso::
    :func:`numpy.random.noncentral_f`
r9   )r   r   noncentral_f)r"   r#   rQ   r   r   r   s         r   rS   rS   5  s'    . 
	$	$	&B??5?FFr   c                P    [         R                  " 5       nUR                  XU5      $ )a  Poisson distribution.

Returns an array of samples drawn from the poisson distribution. Its
probability mass function is defined as

.. math::
    f(x) = \frac{\lambda^xe^{-\lambda}}{k!}.

Args:
    lam (array_like of floats): Parameter of the poisson distribution
        :math:`\lambda`.
    size (int or tuple of ints): The shape of the array. If ``None``, this
        function generate an array whose shape is `lam.shape`.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the poisson distribution.

.. seealso:: :func:`numpy.random.poisson`
)r   r   poisson)lamr   r   r   s       r   rU   rU   P  s#    , 
	$	$	&B::c''r   c                P    [         R                  " 5       nUR                  XU5      $ )aB  Power distribution.

Returns an array of samples drawn from the power distribution. Its
probability density function is defined as

.. math::
   f(x) = ax^{a-1}.

Args:
    a (float): Parameter of the power distribution :math:`a`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the power distribution.

.. seealso::
    :func:`numpy.random.power`
)r   r   powerrN   s       r   rX   rX   j  s#    , 
	$	$	&B88AU##r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Rayleigh distribution.

Returns an array of samples drawn from the rayleigh distribution.
Its probability density function is defined as

  .. math::
     f(x) = \frac{x}{\sigma^2}e^{\frac{-x^2}{2-\sigma^2}}, x \ge 0.

Args:
    scale (array): Parameter of the rayleigh distribution :math:`\sigma`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the rayleigh distribution.

.. seealso:: :func:`numpy.random.rayleigh`
)r   r   rayleighr   s       r   rZ   rZ     s#    * 
	$	$	&B;;uE**r   c                N    [         R                  " 5       nUR                  X5      $ )a8  Standard cauchy distribution.

Returns an array of samples drawn from the standard cauchy distribution.
Its probability density function is defined as

  .. math::
     f(x) = \frac{1}{\pi(1+x^2)}.

Args:
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the standard cauchy distribution.

.. seealso:: :func:`numpy.random.standard_cauchy`
)r   r   standard_cauchyr   r   r   s      r   r\   r\     s#    ( 
	$	$	&Bd**r   c                N    [         R                  " 5       nUR                  X5      $ )a>  Standard exponential distribution.

Returns an array of samples drawn from the standard exponential
distribution. Its probability density function is defined as

  .. math::
     f(x) = e^{-x}.

Args:
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the standard exponential distribution.

.. seealso:: :func:`numpy.random.standard_exponential`
)r   r   standard_exponentialr]   s      r   r_   r_     s#    ( 
	$	$	&B""4//r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Standard gamma distribution.

Returns an array of samples drawn from the standard gamma distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{1}{\Gamma(k)}x^{k-1}e^{-x}.

Args:
    shape (array): Parameter of the gamma distribution :math:`k`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the standard gamma distribution.

.. seealso::
    :func:`numpy.random.standard_gamma`
)r   r   standard_gamma)r'   r   r   r   s       r   ra   ra     s%    , 
	$	$	&BU%00r   c                N    [         R                  " 5       nUR                  X5      $ )a  Returns an array of samples drawn from the standard normal distribution.

This is a variant of :func:`cupy.random.randn`.

Args:
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier.

Returns:
    cupy.ndarray: Samples drawn from the standard normal distribution.

.. seealso:: :func:`numpy.random.standard_normal`

)r   r   standard_normalr]   s      r   rc   rc     s#      
	$	$	&Bd**r   c                P    [         R                  " 5       nUR                  XU5      $ )a  Standard Student's t distribution.

Returns an array of samples drawn from the standard Student's t
distribution. Its probability density function is defined as

.. math::
    f(x) = \frac{\Gamma(\frac{\nu+1}{2})}             {\sqrt{\nu\pi}\Gamma(\frac{\nu}{2})}             \left(1 + \frac{x^2}{\nu} \right)^{-(\frac{\nu+1}{2})}.

Args:
    df (float or array_like of floats): Degree of freedom :math:`\nu`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the standard Student's t distribution.

.. seealso::
    :func:`numpy.random.standard_t`
)r   r   
standard_tr   s       r   re   re     s#    0 
	$	$	&B==5))r   c                R    [         R                  " 5       nUR                  XX#U5      $ )a  Triangular distribution.

Returns an array of samples drawn from the triangular distribution. Its
probability density function is defined as

.. math::
   f(x) = \begin{cases}
        \frac{2(x-l)}{(r-l)(m-l)} & \text{for } l \leq x \leq m, \\
        \frac{2(r-x)}{(r-l)(r-m)} & \text{for } m \leq x \leq r, \\
        0 & \text{otherwise}.
      \end{cases}

Args:
    left (float): Lower limit :math:`l`.
    mode (float): The value where the peak of the distribution occurs.
        :math:`m`.
    right (float): Higher Limit :math:`r`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the triangular distribution.

.. seealso::
    :func:`numpy.random.triangular`
)r   r   
triangular)leftmoderightr   r   r   s         r   rg   rg     s%    : 
	$	$	&B==U%88r   c                L    [         R                  " 5       nUR                  XX#S9$ )aU  Returns an array of uniformly-distributed samples over an interval.

Samples are drawn from a uniform distribution over the half-open interval
``[low, high)``. The samples may contain the ``high`` limit due to
floating-point rounding.

Args:
    low (float): Lower end of the interval.
    high (float): Upper end of the interval.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier.

Returns:
    cupy.ndarray: Samples drawn from the uniform distribution.

.. seealso:: :func:`numpy.random.uniform`

r9   )r   r   uniform)lowhighr   r   r   s        r   rl   rl   8  s%    ( 
	$	$	&B::cd:88r   c                L    [         R                  " 5       nUR                  XX#S9$ )a  von Mises distribution.

Returns an array of samples drawn from the von Mises distribution. Its
probability density function is defined as

.. math::
   f(x) = \frac{e^{\kappa \cos(x-\mu)}}{2\pi I_0(\kappa)}.

Args:
    mu (float): Parameter of the von Mises distribution :math:`\mu`.
    kappa (float): Parameter of the von Mises distribution :math:`\kappa`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the von Mises distribution.

.. seealso::
    :func:`numpy.random.vonmises`
r9   )r   r   vonmises)mukappar   r   r   s        r   rp   rp   P  s%    . 
	$	$	&B;;rt;99r   c                P    [         R                  " 5       nUR                  XX#5      $ )a  Wald distribution.

Returns an array of samples drawn from the Wald distribution. Its
probability density function is defined as

.. math::
   f(x) = \sqrt{\frac{\lambda}{2\pi x^3}}\
       e^{\frac{-\lambda(x-\mu)^2}{2\mu^2x}}.

Args:
    mean (float): Parameter of the wald distribution :math:`\mu`.
    scale (float): Parameter of the wald distribution :math:`\lambda`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the wald distribution.

.. seealso::
    :func:`numpy.random.wald`
)r   r   wald)r;   r   r   r   r   s        r   rt   rt   k  s#    0 
	$	$	&B774,,r   c                L    [         R                  " 5       nUR                  XUS9$ )aV  weibull distribution.

Returns an array of samples drawn from the weibull distribution. Its
probability density function is defined as

.. math::
   f(x) = ax^{(a-1)}e^{-x^a}.

Args:
    a (float): Parameter of the weibull distribution :math:`a`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.float32` and
        :class:`numpy.float64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the weibull distribution.

.. seealso::
    :func:`numpy.random.weibull`
r9   )r   r   weibullrN   s       r   rv   rv     s%    , 
	$	$	&B::a%:00r   c                L    [         R                  " 5       nUR                  XUS9$ )a{  Zipf distribution.

Returns an array of samples drawn from the Zipf distribution. Its
probability mass function is defined as

.. math::
    f(x) = \frac{x^{-a}}{ \zeta (a)},

where :math:`\zeta` is the Riemann Zeta function.

Args:
    a (float): Parameter of the beta distribution :math:`a`.
    size (int or tuple of ints): The shape of the array. If ``None``, a
        zero-dimensional array is generated.
    dtype: Data type specifier. Only :class:`numpy.int32` and
        :class:`numpy.int64` types are allowed.

Returns:
    cupy.ndarray: Samples drawn from the Zipf distribution.

.. seealso::
    :func:`numpy.random.zipf`
r9   )r   r   zipfrN   s       r   rx   rx     s%    0 
	$	$	&B771u7--r   )Nl)r$   Nry   )*
__future__r   cupy.randomr   cupyr   floatr   intr   r   r   r   r!   r&   r)   r,   r0   r5   r7   r:   r>   r@   rE   rK   rM   rP   rS   rU   rX   rZ   r\   r_   ra   rc   re   rg   rl   rp   rt   rv   rx    r   r   <module>r      s   " "   &6 C *6 5 )4 e ,: ! .6 U +B U /4(4 #D .B@> Cd% 06 3T /6 cE =034 "&S >6 )-(!*E7:t #D ., u %4 )-E EB +/e G6(4 e $4 T +2 U +0 #% 00  $5 14 U +( E *8 (,5 9B #D 90 " :6  u -8  14 S .r   