public static void OnUniformTestPassed(this ModelTime now, Action <ModelTime> action, double density)
        {
            var quantile = 1 - density;
            var test     = new Func <bool>(() =>
                                           ContinuousUniform.InvCDF(0, 1, ContinuousUniform.Sample()) >= quantile);

            OnContinuousDistributionTest(now, test, action, density);
        }
        public void ValidateInverseCumulativeDistribution(double lower, double upper)
        {
            var n = new ContinuousUniform(lower, upper);

            for (var i = 0; i < 11; i++)
            {
                var x = i - 5.0;
                if (x <= lower)
                {
                    Assert.AreEqual(lower, n.InverseCumulativeDistribution(0.0), 1e-12);
                    Assert.AreEqual(lower, ContinuousUniform.InvCDF(lower, upper, 0.0), 1e-12);
                }
                else if (x >= upper)
                {
                    Assert.AreEqual(upper, n.InverseCumulativeDistribution(1.0), 1e-12);
                    Assert.AreEqual(upper, ContinuousUniform.InvCDF(lower, upper, 1.0), 1e-12);
                }
                else
                {
                    Assert.AreEqual(x, n.InverseCumulativeDistribution((x - lower) / (upper - lower)), 1e-12);
                    Assert.AreEqual(x, ContinuousUniform.InvCDF(lower, upper, (x - lower) / (upper - lower)), 1e-12);
                }
            }
        }