As far as I know, there is no readily available function which gives you multivariate random normal numbers in Math.net. However you can easily write a specific function for that purpose which uses the Cholesky decomposition of the covariance matrix. Indeed when each elements of p-variate vector Z are independently distributed according to standard normal distribution N(0,1), the vector X = M + L * Z is distributed according to p-variate normal distribution whose population mean vector is M and whose covariance matrix is S (where S = L*L').
As I am a vb guy, I will show here the vb code to write such a function:
Public Function MvNRnd(Mu As Vector, Covariance As Matrix, Cases As Double) As Matrix
Dim standardNormalDistribution As New Normal(0, 1)
Dim randomValues(Cases - 1) As Vector
Dim cholesky As Factorization.Cholesky(Of Double) = Covariance.Cholesky
For i As Integer = 0 To Cases - 1
'generate independent standard normal random numbers
randomValues(i) = DenseVector.CreateRandom(Mu.Count, standardNormalDistribution)
'generate multivariate normal random numbers
cholesky.Factor.Multiply(randomValues(i), randomValues(i))
randomValues(i) += Mu
Next
Return DenseMatrix.OfRowVectors(randomValues)
End Function
The equivalent C# code should look like this (translated via http://converter.telerik.com):
public Matrix MvNRnd(Vector Mu, Matrix Covariance, double Cases)
{
Normal standardNormalDistribution = new Normal(0, 1);
Vector[] randomValues = new Vector[Cases];
Factorization.Cholesky<double> cholesky = Covariance.Cholesky;
for (int i = 0; i <= Cases - 1; i++) {
//generate independent standard normal random numbers
randomValues(i) = DenseVector.CreateRandom(Mu.Count, standardNormalDistribution);
//generate multivariate normal random numbers
cholesky.Factor.Multiply(randomValues(i), randomValues(i));
randomValues(i) += Mu;
}
return DenseMatrix.OfRowVectors(randomValues);
}