public void TestCumulativeDistribution() { // Standard normal. var dist = new BoxMullerGaussianDistribution(0.0, 1.0); GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 1.0); // Non-zero mean tests. dist = new BoxMullerGaussianDistribution(10.0, 1.0); GaussianDistributionTestUtils.TestDistribution(dist, 10.0, 1.0); dist = new BoxMullerGaussianDistribution(-100.0, 1.0); GaussianDistributionTestUtils.TestDistribution(dist, -100.0, 1.0); // Non-1.0 standard deviations dist = new BoxMullerGaussianDistribution(0.0, 0.2); GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 0.2); dist = new BoxMullerGaussianDistribution(0.0, 5.0); GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 5.0); // Non-zero mean and non-1.0 standard deviation. dist = new BoxMullerGaussianDistribution(10.0, 2.0); GaussianDistributionTestUtils.TestDistribution(dist, 10.0, 2.0); dist = new BoxMullerGaussianDistribution(-10.0, 3.0); GaussianDistributionTestUtils.TestDistribution(dist, -10.0, 3.0); }
public void TestMean() { int sampleCount = 10000000; var dist = new BoxMullerGaussianDistribution(); double[] sampleArr = new double[sampleCount]; for (int i = 0; i < sampleCount; i++) { sampleArr[i] = dist.Sample(); } double sum = Math.Abs(sampleArr.Sum()); double mean = sum / sampleCount; Assert.IsTrue(Math.Abs(mean) < 0.001); }
public void TestStandardDeviation() { int sampleCount = 10000000; var dist = new BoxMullerGaussianDistribution(); double sqrSum = 0.0; for (int i = 0; i < sampleCount; i++) { double x = dist.Sample(); sqrSum += x * x; } double var = sqrSum / sampleCount; double stdDev = Math.Sqrt(var); Assert.IsTrue(Math.Abs(stdDev - 1.0) < 0.001); }
public void TestSimpleStats() { var dist = new BoxMullerGaussianDistribution(); GaussianDistributionTestUtils.TestSimpleStats(dist); }