public void Distribution_Resample() { Simulation.NumberOfSamples = 100000; var testInfo = ExpectedResults.Data["DistributionResults"]["ContinuousUniformDistribution"]; var inputs = testInfo["ConstructorInputs"]; ContinuousUniformDistribution distr = new ContinuousUniformDistribution( inputs["min"].Value <double>(), inputs["max"].Value <double>(), inputs["randomSeed"].Value <int>()); var resampledDist = distr.Resample(); Assert.AreEqual(distr.Maximum, resampledDist.Maximum); Assert.AreEqual(distr.Minimum, resampledDist.Minimum); Assert.AreEqual(distr.Mean, resampledDist.Mean, 10); Assert.AreEqual(distr.Median, resampledDist.Median); Assert.AreEqual(distr.StandardDeviation, resampledDist.StandardDeviation, 10); Assert.AreEqual(distr.Variance, resampledDist.Variance, 10); Assert.AreEqual(distr.ConstrainedToInt, resampledDist.ConstrainedToInt); Assert.IsTrue( distr.GetResult()[0] != resampledDist.GetResult()[0] || distr.GetResult()[1] != resampledDist.GetResult()[1] || distr.GetResult()[2] != resampledDist.GetResult()[2] || distr.GetResult()[3] != resampledDist.GetResult()[3] || distr.GetResult()[4] != resampledDist.GetResult()[4]); Assert.AreEqual(distr.Percentile(0), resampledDist.Percentile(0)); Assert.AreEqual(distr.Percentile(25), resampledDist.Percentile(25)); Assert.AreEqual(distr.Percentile(50), resampledDist.Percentile(50)); Assert.AreEqual(distr.Percentile(75), resampledDist.Percentile(75)); Assert.AreEqual(distr.Percentile(100), resampledDist.Percentile(100)); // Force recalculation by changing seed on original distribution distr.RandomSeed = distr.RandomSeed + 1; Assert.AreEqual(distr.Maximum, resampledDist.Maximum); Assert.AreEqual(distr.Minimum, resampledDist.Minimum); Assert.AreEqual(distr.Mean, resampledDist.Mean, 10); Assert.AreEqual(distr.Median, resampledDist.Median); Assert.AreEqual(distr.StandardDeviation, resampledDist.StandardDeviation, 10); Assert.AreEqual(distr.Variance, resampledDist.Variance, 10); }