# C# Random Number Example

← All NMath Code Examples

```using System;

using CenterSpace.NMath.Core;

namespace CenterSpace.NMath.Core.Examples.CSharp
{
/// <summary>
/// A .NET example in C# showing how to generate random numbers from a normal distribution,
/// using the class RandGenNormal, and place them in a histogram.
/// </summary>
class NormalRNGExample
{

static void Main( string[] args )
{
double mean = 70.0;
double variance = 10.0;

// Create a default generator. The default generator will generate
// random numbers from a normal distribution with a specified mean
// and variance.
var normalRng = new RandGenNormal( mean, variance );

// Now construct a vector of random numbers using this generator.
int numRandDeviates = 200;
var randomVec = new DoubleVector( numRandDeviates, normalRng );

// Create a histogram with equal sized bins for the random numbers.
int numBins = 20;
var h = new Histogram( numBins, randomVec );

Console.WriteLine();

// Print out the histogram in a "stem leaf" format.
Console.WriteLine( "{0} random deviates from a normal({1},{2}) distribution:",
numRandDeviates, mean, variance );
Console.WriteLine( h.StemLeaf() );

// Change the mean and variance for generator and check the mean and
// variance of the generated deviates.
normalRng.Mean = -2.0;
normalRng.Variance = 1.0;
randomVec = new DoubleVector( 1000, normalRng );

double meanOfDeviates = NMathFunctions.Mean( randomVec );
Console.WriteLine( "Distribution mean = {0}, mean of deviates = {1}",
normalRng.Mean, meanOfDeviates );

double varianceOfDeviates = NMathFunctions.Variance( randomVec );
Console.WriteLine( "Distribution variance = {0}, variance of deviates = {1}",
normalRng.Variance, varianceOfDeviates );

// Replace the vector's contents with new random numbers
randomVec.Transform( new Func<double>( normalRng.NextDouble ) );

Console.WriteLine();
Console.WriteLine( "Press Enter Key" );