Skip to main content
`Ctrl`+`K`
scipy.stats.qmc.

# MultivariateNormalQMC

class scipy.stats.qmc.MultivariateNormalQMC(mean, cov=None, *, cov_root=None, inv_transform=True, engine=None, rng=None)

  QMC sampling from a multivariate Normal \(N(\mu, \Sigma)\).

  Parameters:
    mean array_like (d,)

      The mean vector. Where `d` is the dimension.

    cov array_like (d, d), optional

      The covariance matrix. If omitted, use cov_root instead. If both cov and cov_root are omitted, use the identity matrix.

    cov_root array_like (d, d’), optional

      A root decomposition of the covariance matrix, where `d'` may be less than `d` if the covariance is not full rank. If omitted, use cov.

    inv_transform bool, optional

      If True, use inverse transform instead of Box-Muller. Default is True.

    engine QMCEngine, optional

      Quasi-Monte Carlo engine sampler. If None, `Sobol` is used.

    rng `numpy.random.Generator`, optional

      Pseudorandom 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` are passed to `numpy.random.default_rng` to instantiate a `Generator`.

      Changed in version 1.15.0: As part of the SPEC-007 transition from use of `numpy.random.RandomState` to `numpy.random.Generator`, this keyword was changed from seed to rng. For an interim period, both keywords will continue to work, although only one may be specified at a time. After the interim period, function calls using the seed keyword will emit warnings. Following a deprecation period, the seed keyword will be removed.

  Methods

  `random`([n]) | Draw n QMC samples from the multivariate Normal.

  Examples

      >>> import matplotlib.pyplot as plt
      >>> from scipy.stats import qmc
      >>> dist = qmc.MultivariateNormalQMC(mean=[0, 5], cov=[[1, 0], [0, 1]])
      >>> sample = dist.random(512)
      >>> _ = plt.scatter(sample[:, 0], sample[:, 1])
      >>> plt.show()