Accord.Statistics.Distributions.Multivariate.NormalDistribution.Generate C# (CSharp) Method

Generate() public method

Generates a random vector of observations from the current distribution.
public Generate ( int samples ) : double[][]
samples int The number of samples to generate.
return double[][]
        public double[][] Generate(int samples)
        {
            var r = new StandardGenerator();
            double[,] A = chol.LeftTriangularFactor;

            var data = new double[samples][];
            for (int i = 0; i < data.Length; i++)
            {
                var sample = new double[Dimension];
                for (int j = 0; j < sample.Length; j++)
                    sample[j] = r.Next();

                data[i] = A.Multiply(sample).Add(Mean);
            }

            return data;
        }
    }

Usage Example

        public void NormalGenerateTest()
        {
            // Create a Normal with mean 2 and sigma 5
            var normal = new NormalDistribution(2, 5);

            // Generate 1000000 samples from it
            double[] samples = normal.Generate(1000000);

            // Try to estimate a new Normal distribution from the 
            // generated samples to check if they indeed match
            var actual = NormalDistribution.Estimate(samples);

            string result = actual.ToString("N2"); // N(x; μ = 2.01, σ² = 25.03)

            Assert.AreEqual("N(x; μ = 2.01, σ² = 25.03)", result);
        }
All Usage Examples Of Accord.Statistics.Distributions.Multivariate.NormalDistribution::Generate