public void TimeGammaGenerators() { double alpha = 1.0; Random rng = new Random(1); //IDeviateGenerator nRng = new AhrensDieterGammaGenerator(alpha); IDeviateGenerator nRng = new MarsagliaTsangGammaGenerator(new PolarRejectionNormalDeviateGenerator(), alpha); ContinuousDistribution d = new GammaDistribution(alpha); //double sum = 0.0; Sample sample = new Sample(); Stopwatch timer = Stopwatch.StartNew(); for (int i = 0; i < 1000000; i++) { //double x = nRng.GetNext(rng); double x = d.InverseLeftProbability(rng.NextDouble()); //sum += x; sample.Add(x); } timer.Stop(); Console.WriteLine(sample.KolmogorovSmirnovTest(d).RightProbability); //Console.WriteLine(sum); Console.WriteLine(timer.ElapsedMilliseconds); }