private double GetCoveragePercentage(IDistribution distribution, Probability probability, ConfidenceLevel confidenceLevel, Random random, int sampleSize, int repetitions) { var generator = distribution.Random(random); var estimator = HarrellDavisQuantileEstimator.Instance; double trueValue = distribution.Quantile(probability); int success = 0; for (int i = 0; i < repetitions; i++) { var sample = new Sample(generator.Next(sampleSize)); var estimatedCi = estimator .GetQuantileConfidenceIntervalEstimator(sample, probability) .GetConfidenceInterval(confidenceLevel); if (estimatedCi.Contains(trueValue)) { success++; } } return(success * 1.0 / repetitions); }
public static RandomGenerator Random([NotNull] this IDistribution distribution, int seed) => distribution.Random(new Random(seed));