diff --git a/FastRngTests/Double/Distributions/Uniform.cs b/FastRngTests/Double/Distributions/Uniform.cs index 210c188..96bb560 100644 --- a/FastRngTests/Double/Distributions/Uniform.cs +++ b/FastRngTests/Double/Distributions/Uniform.cs @@ -12,6 +12,30 @@ namespace FastRngTests.Double.Distributions { private readonly IRandom rng = new MultiThreadedRng(); + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestUniformDistribution01() + { + const double A = 0.0; + const double B = 1.0; + const double MEAN = 0.5 * (A + B); + const double VARIANCE = (1.0 / 12.0) * (B - A) * (B - A); + + var stats = new RunningStatistics(); + var rng = new MultiThreadedRng(); + + for (var n = 0; n < 100_000; n++) + stats.Push(await rng.GetUniform()); + + rng.StopProducer(); + TestContext.WriteLine($"mean={MEAN} vs. {stats.Mean}"); + TestContext.WriteLine($"variance={VARIANCE} vs {stats.Variance}"); + + Assert.That(stats.Mean, Is.EqualTo(MEAN).Within(0.4), "Mean is out of range"); + Assert.That(stats.Variance, Is.EqualTo(VARIANCE).Within(0.4), "Variance is out of range"); + } + [Test] [Category(TestCategories.COVER)] [Category(TestCategories.NORMAL)]