r"""
        Draw a random value from this Parameter's distribution.

        If ``value`` was not initialised with a ``scipy.stats`` object, then
        the scalar/ndarray value is returned.

        Parameters
        ----------
        random_state : None, int or RandomState, optional
            random seed

        Returns
        -------
        ndarray :
            of size ``self.shape``, a random draw from the distribution, or
            ``self.value`` if not initialised with a ``scipy.stats`` object.

        Note
        ----
        Random draws are *clipped* to the bounds, and so it is up to the user
        to input a sensible sampling distribution!

def rvs(self, random_state=None):
        r"""
        Draw a random value from this Parameter's distribution.

        If ``value`` was not initialised with a ``scipy.stats`` object, then
        the scalar/ndarray value is returned.

        Parameters
        ----------
        random_state : None, int or RandomState, optional
            random seed

        Returns
        -------
        ndarray :
            of size ``self.shape``, a random draw from the distribution, or
            ``self.value`` if not initialised with a ``scipy.stats`` object.

        Note
        ----
        Random draws are *clipped* to the bounds, and so it is up to the user
        to input a sensible sampling distribution!
        """
        # No sampling distibution
        if self.dist is None:
            return self.value

        # Unconstrained samples
        rs = check_random_state(random_state)
        samples = self.dist.rvs(size=self.shape, random_state=rs)

        # Bound the samples
        samples = self.bounds.clip(samples)

        return samples