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); } } }