: tuple of ints, default: () The shape of the sample to draw. If the parameters of the distribution underlying the random variable are arrays of shape ``param_shape``, the output array will be of shape ``shape + param_shape``. method : {None, 'formula', 'inverse_transform'} The strategy used to produce the sample. By default (``None``), the infrastructure chooses between the following options, listed in order of precedence. - ``'formula'``: an implementation specific to the distribution - ``'inverse_transform'``: generate a uniformly distributed sample and return the inverse CDF at these arguments. Not all `method` options are available for all distributions. If the selected `method` is not available, a `NotImplementedError`` will be raised. rng : `numpy.random.Generator` or `scipy.stats.QMCEngine`, optional Pseudo- or quasi-random number generator state. When `rng` is None, a new `numpy.random.Generator` is created using entropy from the operating system. Types other than `numpy.random.Generator` and `scipy.stats.QMCEngine` are passed to `numpy.random.default_rng` to instantiate a ``Generator``. If `rng` is an instance of `scipy.stats.QMCEngine` configured to use scrambling and `shape` is not empty, then each slice along the zeroth axis of the result is a "quasi-independent", low-discrepancy sequence; that is, they are distinct sequences that can be treated as statistically independent for most practical purposes. Separate calls to `sample` produce new quasi-independent, low-discrepancy sequences. References ---------- .. [1] Sampling (statistics), *Wikipedia*, https://en.wikipedia.org/wiki/Sampling_(statistics) Examples -------- Instantiate a distribution with the desired parameters: >>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=0., b=1.) Generate a pseudorandom sample: >>> x = X.sample((1000, 1)) >>> octiles = (np.arange(8) + 1) / 8 >>> np.count_nonzero(x <= octiles, axis=0) array([ 148, 263, 387, 516, 636, 751, 865, 1000]) # may vary >>> X = stats.Uniform(a=np.zeros((3, 1)), b=np.ones(2)) >>> X.a.shape, (3, 2) >>> x = X.sample(shape=(5, 4)) >>> x.shape (5, 4, 3, 2) r