
    `i,                        d dl mZ d dlmZ defdZdefdZdefdZdefdZ	defdZ
defd	Zd
defdZdefdZdd
defdZdefdZdd
defdZdd
defdZdd
defdZdefdZdefdZddddefdZdd
defdZdefdZdefdZdefdZd
defdZdefdZd
defdZdefd Zdefd!Zdefd"Zdefd#Z defd$Z!defd%Z"dd
defd&Z#defd'Z$defd(Z%defd)Z&defd*Z'dS )+    )
_generator)_utilNc                 X    t          j                    }|                    | |||          S )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        n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupy/random/_distributions.pyr   r      s*    . 
	$	&	&B771au%%%    c                 X    t          j                    }|                    | |||          S )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;;q!T5)))r   c                 V    t          j                    }|                    | ||          S )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<<D%(((r   c                 V    t          j                    }|                    | ||          S )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   X   s(    2 
	$	&	&B<<tU+++r   c                 V    t          j                    }|                    | ||          S )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   u   s(    . 
	$	&	&B>>%u---r   c                 X    t          j                    }|                    | |||          S )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udE***r   g      ?c                 X    t          j                    }|                    | |||          S )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88E5$...r   c                 V    t          j                    }|                    | ||          S )a  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<<4'''r   g        c                 X    t          j                    }|                    | |||          S )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%u---r   c                 Z    t          j                    }|                    | ||||          S )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   r.   r.     s.    6 
	$	&	&BUD'4???r   c                 X    t          j                    }|                    | |||          S )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   r3   r3   %  s*    . 
	$	&	&B;;sE4///r   c                 X    t          j                    }|                    | |||          S )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   r5   r5   @  s*    . 
	$	&	&B::c5$...r   c                 Z    t          j                    }|                    | |||          S )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   r8   r8   [  s,    ( 
	$	&	&B<<e$e<<<<r   c                 X    t          j                    }|                    | ||          S )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`

    r7   )r   r   	logseriesr(   s       r   r<   r<   s  s*    , 
	$	&	&B<<E<222r   c                 Z    t          j                    }|                    | |||          S )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`
    r7   )r   r   negative_binomialr   s        r   r>   r>     s/    . 
	$	&	&B14u===r   ignoreg:0yE>choleskyc           	          t          j        d           t          j                    }|                    | ||||||          S )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)r9   covr
   check_validtolmethodr   r   s           r   rC   rC     sL    h 
8999		$	&	&B!!c4c65: : :r   c                 X    t          j                    }|                    | |||          S )aa  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   rI   rI     s*    $ 
	$	&	&B99S%u---r   c                 V    t          j                    }|                    | ||          S )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   rK   rK     s(    , 
	$	&	&B99Qe$$$r   c                 Z    t          j                    }|                    | |||          S )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`
    r7   )r   r   noncentral_chisquare)r   noncr
   r   r   s        r   rN   rN     s/    : 
	$	&	&B""2t$e"DDDr   c                 \    t          j                    }|                    | ||||          S )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`
    r7   )r   r   noncentral_f)r!   r"   rO   r
   r   r   s         r   rQ   rQ   3  s.    . 
	$	&	&B??5%D?FFFr   c                 V    t          j                    }|                    | ||          S )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   rS   rS   N  s(    , 
	$	&	&B::c4'''r   c                 V    t          j                    }|                    | ||          S )a~  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   powerrL   s       r   rV   rV   h  s(    , 
	$	&	&B88AtU###r   c                 V    t          j                    }|                    | ||          S )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   rX   rX     s(    * 
	$	&	&B;;udE***r   c                 T    t          j                    }|                    | |          S )al  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   rZ   rZ     s(    ( 
	$	&	&BdE***r   c                 T    t          j                    }|                    | |          S )ar  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                 V    t          j                    }|                    | ||          S )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   r_   r_     s*    , 
	$	&	&BUD%000r   c                 T    t          j                    }|                    | |          S )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   ra   ra     s(      
	$	&	&BdE***r   c                 V    t          j                    }|                    | ||          S )aD  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   rc   rc     s(    0 
	$	&	&B==T5)))r   c                 Z    t          j                    }|                    | ||||          S )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   re   re     s,    : 
	$	&	&B==tUD%888r   c                 Z    t          j                    }|                    | |||          S )a  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`

    r7   )r   r   uniform)lowhighr
   r   r   s        r   rj   rj   6  s,    ( 
	$	&	&B::c4d%:888r   c                 Z    t          j                    }|                    | |||          S )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`
    r7   )r   r   vonmises)mukappar
   r   r   s        r   rn   rn   N  s,    . 
	$	&	&B;;r5t5;999r   c                 X    t          j                    }|                    | |||          S )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)r9   r   r
   r   r   s        r   rr   rr   i  s*    0 
	$	&	&B774e,,,r   c                 X    t          j                    }|                    | ||          S )a  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`
    r7   )r   r   weibullrL   s       r   rt   rt     s*    , 
	$	&	&B::ad%:000r   c                 X    t          j                    }|                    | ||          S )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`
    r7   )r   r   zipfrL   s       r   rv   rv     s*    0 
	$	&	&B7714u7---r   )(cupy.randomr   cupyr   floatr   intr   r   r   r   r    r$   r'   r*   r.   r3   r5   r8   r<   r>   rC   rI   rK   rN   rQ   rS   rV   rX   rZ   r]   r_   ra   rc   re   rj   rn   rr   rt   rv    r   r   <module>r|      s   " " " " " "        & & & &6 C * * * *6 5 ) ) ) )4 e , , , ,: ! . . . .6 U + + + +B U / / / /4 # ( ( ( (4 #D . . . .B /3# @ @ @ @> Cd% 0 0 0 06 3T / / / /6 cE = = = =0 # 3 3 3 34 "&S > > > >6 )-(!*E7: 7: 7: 7:t #D . . . ., u % % % %4 )-E E E E EB +/e G G G G6 $c ( ( ( (4 e $ $ $ $4 T + + + +2 U + + + +0 #% 0 0 0 00  $5 1 1 1 14 U + + + +( E * * * *8 (,5 9 9 9 9B #D 9 9 9 90 " : : : :6  u - - - -8  1 1 1 14 S . . . . . .r   