SSJ
V. 2.6.

## umontreal.iro.lecuyer.randvarmulti Class MultinormalGen

```java.lang.Object
umontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen
umontreal.iro.lecuyer.randvarmulti.MultinormalGen
```
Direct Known Subclasses:
MultinormalCholeskyGen, MultinormalPCAGen

`public class MultinormalGenextends RandomMultivariateGen`

Extends `RandomMultivariateGen` for a multivariate normal (or multinormal) distribution. The d-dimensional multivariate normal distribution with mean vector μRd and (symmetric positive-definite) covariance matrix Σ, denoted N(μ, Σ), has density

f (X) = exp(- (X - μ)tΣ-1(X - μ)/2)/((2π)^d  )1/2,

for all XRd, and Xt is the transpose vector of X. If ZN( 0,I) where I is the identity matrix, Z is said to have the standard multinormal distribution.

For the special case d = 2, if the random vector X = (X1, X2)t has a bivariate normal distribution, then it has mean μ = (μ1, μ2)t, and covariance matrix

Σ = [1#1]

if and only if Var[X1] = σ12, Var[X2] = σ22, and the linear correlation between X1 and X2 is ρ, where σ1 > 0, σ2 > 0, and -1 <= ρ <= 1.

Constructor Summary
```MultinormalGen(NormalGen gen1, int d)```
Constructs a generator with the standard multinormal distribution (with μ = 0 and Σ = I) in d dimensions.

Method Summary
` double[]` `getMu()`
Returns the mean vector used by this generator.
` double` `getMu(int i)`
Returns the i-th component of the mean vector for this generator.
` cern.colt.matrix.DoubleMatrix2D` `getSigma()`
Returns the covariance matrix Σ used by this generator.
` void` `nextPoint(double[] p)`
Generates a point from this multinormal distribution.
` void` `setMu(double[] mu)`
Sets the mean vector to mu.
` void` ```setMu(int i, double mui)```
Sets the i-th component of the mean vector to mui.

Methods inherited from class umontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen
`getDimension, getStream, nextArrayOfPoints, setStream`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### MultinormalGen

```public MultinormalGen(NormalGen gen1,
int d)```
Constructs a generator with the standard multinormal distribution (with μ = 0 and Σ = I) in d dimensions. Each vector Z will be generated via d successive calls to gen1, which must be a standard normal generator.

Parameters:
`gen1` - the one-dimensional generator
`d` - the dimension of the generated vectors
Throws:
`IllegalArgumentException` - if the one-dimensional normal generator uses a normal distribution with μ not equal to 0, or σ not equal to 1.
`IllegalArgumentException` - if d is negative.
`NullPointerException` - if gen1 is null.
Method Detail

### getMu

`public double[] getMu()`
Returns the mean vector used by this generator.

Returns:
the current mean vector.

### getMu

`public double getMu(int i)`
Returns the i-th component of the mean vector for this generator.

Parameters:
`i` - the index of the required component.
Returns:
the value of μi.
Throws:
`ArrayIndexOutOfBoundsException` - if i is negative or greater than or equal to `getDimension`.

### setMu

`public void setMu(double[] mu)`
Sets the mean vector to mu.

Parameters:
`mu` - the new mean vector.
Throws:
`NullPointerException` - if mu is null.
`IllegalArgumentException` - if the length of mu does not correspond to `getDimension`.

### setMu

```public void setMu(int i,
double mui)```
Sets the i-th component of the mean vector to mui.

Parameters:
`i` - the index of the modified component.
`mui` - the new value of μi.
Throws:
`ArrayIndexOutOfBoundsException` - if i is negative or greater than or equal to `getDimension`.

### getSigma

`public cern.colt.matrix.DoubleMatrix2D getSigma()`
Returns the covariance matrix Σ used by this generator.

Returns:
the used covariance matrix.

### nextPoint

`public void nextPoint(double[] p)`
Generates a point from this multinormal distribution.

Specified by:
`nextPoint` in class `RandomMultivariateGen`
Parameters:
`p` - the array to be filled with the generated point

SSJ
V. 2.6.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.