public void CanCreateHypergeometric(int size, int m, int n) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(size, d.PopulationSize); Assert.AreEqual(m, d.M); Assert.AreEqual(n, d.N); }
public void ValidateToString() { System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; var d = new Hypergeometric(10, 1, 1); Assert.AreEqual("Hypergeometric(N = 10, M = 1, n = 1)", d.ToString()); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string populationSizeStr = req.Query["CardsRemaining"]; string successesStr = req.Query["Outs"]; string drawsStr = req.Query["Draws"]; string neededStr = req.Query["Needed"]; if (string.IsNullOrWhiteSpace(populationSizeStr) || string.IsNullOrWhiteSpace(successesStr) || string.IsNullOrWhiteSpace(drawsStr) || string.IsNullOrWhiteSpace(neededStr)) { return(new BadRequestObjectResult("Missing Parameters")); } var popSuccess = int.TryParse(populationSizeStr, out var population); var successesSuccess = int.TryParse(successesStr, out var successes); var drawsSuccess = int.TryParse(drawsStr, out var draws); var neededSuccess = int.TryParse(neededStr, out var needed); if (!popSuccess || !successesSuccess || !drawsSuccess || !neededSuccess) { return(new BadRequestObjectResult("Numbers have to be an int")); } var dist = new Hypergeometric(population, successes, draws); var result = 1 - dist.CumulativeDistribution(needed - 1); return(new OkObjectResult(result.ToString(CultureInfo.InvariantCulture))); }
public void CanCreateHypergeometric(int N, int m, int n) { var d = new Hypergeometric(N, m, n); Assert.AreEqual<double>(N, d.PopulationSize); Assert.AreEqual<double>(m, d.M); Assert.AreEqual<double>(n, d.N); }
public void CanCreateHypergeometric(int population, int success, int draws) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual(population, d.Population); Assert.AreEqual(success, d.Success); Assert.AreEqual(draws, d.Draws); }
public void CumulativeDistributionMustNotOverflow_CodePlexIssue5729() { var d = new Hypergeometric(10000, 2, 9800); Assert.That(d.CumulativeDistribution(0.0), Is.Not.NaN); Assert.That(d.CumulativeDistribution(0.1), Is.Not.NaN); }
public void CanSampleSequence() { var d = new Hypergeometric(10, 1, 1); var ied = d.Samples(); ied.Take(5).ToArray(); }
public void CanCreateHypergeometric([Values(0, 1, 2, 2, 10, 10)] int size, [Values(0, 1, 1, 2, 1, 5)] int m, [Values(0, 1, 1, 2, 1, 3)] int n) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(size, d.PopulationSize); Assert.AreEqual(m, d.M); Assert.AreEqual(n, d.N); }
public static double CalculateWeight(int N, int M, int n, int k) { if (M < k) { return(0); } return(Hypergeometric.CDF(N, M, n, k)); }
public void CanCreateHypergeometric(int N, int m, int n) { var d = new Hypergeometric(N, m, n); Assert.AreEqual <double>(N, d.PopulationSize); Assert.AreEqual <double>(m, d.M); Assert.AreEqual <double>(n, d.N); }
public void ValidateProbabilityLn( [Values(0, 1, 2, 2, 2, 10, 10, 10, 10)] int size, [Values(0, 1, 1, 1, 2, 1, 1, 5, 5)] int m, [Values(0, 1, 1, 1, 2, 1, 1, 3, 3)] int n, [Values(0, 1, 0, 1, 2, 0, 1, 1, 3)] int x) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(Math.Log(d.Probability(x)), d.ProbabilityLn(x)); }
public void ValidateProbability( [Values(0, 1, 2, 2, 2, 10, 10, 10, 10)] int size, [Values(0, 1, 1, 1, 2, 1, 1, 5, 5)] int m, [Values(0, 1, 1, 1, 2, 1, 1, 3, 3)] int n, [Values(0, 1, 0, 1, 2, 0, 1, 1, 3)] int x) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(SpecialFunctions.Binomial(m, x) * SpecialFunctions.Binomial(size - m, n - x) / SpecialFunctions.Binomial(size, n), d.Probability(x)); }
public void ValidateCumulativeDistribution( [Values(0, 1, 2, 2, 2, 10, 10, 10, 10)] int size, [Values(0, 1, 1, 1, 2, 1, 1, 5, 5)] int m, [Values(0, 1, 1, 1, 2, 1, 1, 3, 3)] int n, [Values(0.5, 1.1, 0.3, 1.2, 2.4, 0.3, 1.2, 1.1, 3.0)] double x, [Values(1.0, 1.0, 0.5, 1.0, 1.0, 0.9, 1.0, 0.5, 0.916666666666667)] double cdf) { var d = new Hypergeometric(size, m, n); AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 14); }
private static void hypergeometric_cdf_test() //****************************************************************************80 // // Purpose: // // HYPERGEOMETRIC_CDF_TEST tests HYPERGEOMETRIC_CDF. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 08 April 2016 // // Author: // // John Burkardt // { Console.WriteLine(""); Console.WriteLine("HYPERGEOMETRIC_CDF_TEST"); Console.WriteLine(" HYPERGEOMETRIC_CDF evaluates the Hypergeometric CDF."); Console.WriteLine(" HYPERGEOMETRIC_PDF evaluates the Hypergeometric PDF."); const int n = 10; const int m = 7; const int l = 100; Console.WriteLine(""); Console.WriteLine(" Total number of balls L = " + l + ""); Console.WriteLine(" Number of white balls M = " + m + ""); Console.WriteLine(" Number of balls taken N = " + n + ""); if (!Hypergeometric.hypergeometric_check(n, m, l)) { Console.WriteLine(""); Console.WriteLine("HYPERGEOMETRIC_CDF_TEST - Fatal error!"); Console.WriteLine(" The parameters are not legal."); return; } int x = 7; double pdf = Hypergeometric.hypergeometric_pdf(x, n, m, l); double cdf = Hypergeometric.hypergeometric_cdf(x, n, m, l); Console.WriteLine(" PDF argument X = " + x + ""); Console.WriteLine(" PDF value = = " + pdf + ""); Console.WriteLine(" CDF value = = " + cdf + ""); }
public static void hypergeometric_pdf_values_test() //****************************************************************************80 // // Purpose: // // HYPERGEOMETRIC_PDF_VALUES_TEST tests HYPERGEOMETRIC_PDF_VALUES. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 28 January 2008 // // Author: // // John Burkardt // { double fx = 0; int pop = 0; int sam = 0; int succ = 0; int x = 0; Console.WriteLine(""); Console.WriteLine("HYPERGEOMETRIC_PDF_VALUES_TEST:"); Console.WriteLine(" HYPERGEOMETRIC_PDF_VALUES stores values of"); Console.WriteLine(" the Hypergeometric PDF."); Console.WriteLine(""); Console.WriteLine(" SAM SUC POP X HyperPDF(S,S,P)(X)"); Console.WriteLine(""); int n_data = 0; for (;;) { Hypergeometric.hypergeometric_pdf_values(ref n_data, ref sam, ref succ, ref pop, ref x, ref fx); if (n_data == 0) { break; } Console.WriteLine(" " + sam.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + succ.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + pop.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + x.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + fx.ToString("0.################").PadLeft(24) + ""); } }
public static void hyper_2f1_values_test() //****************************************************************************80 // // Purpose: // // HYPER_2F1_VALUES_TEST tests HYPER_2F1_VALUES. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 09 September 2007 // // Author: // // John Burkardt // { double a = 0; double b = 0; double c = 0; double fx = 0; double x = 0; Console.WriteLine(""); Console.WriteLine("HYPER_2F1_VALUES_TEST:"); Console.WriteLine(" HYPER_2F1_VALUES stores values of"); Console.WriteLine(" the hypergeometric function 2F1."); Console.WriteLine(""); Console.WriteLine(" A B C X Hyper_2F1(A,B,C,X)"); Console.WriteLine(""); int n_data = 0; for (;;) { Hypergeometric.hyper_2f1_values(ref n_data, ref a, ref b, ref c, ref x, ref fx); if (n_data == 0) { break; } Console.WriteLine(" " + a.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + b.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + c.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + x.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + fx.ToString("0.################").PadLeft(24) + ""); } }
public static double GetHyperGeometricPvalue(int n, int k, int n1, int k1, bool upperTailProb = true) { if (k >= n) { return(1.0d); } var pValue = Hypergeometric.CDF(n, k, n1, k1); if (upperTailProb) { pValue = 1 - pValue; } else { pValue = Math.Min(pValue, 1 - pValue); } return(pValue); }
public void CalculateHypergeometric() { if (SamplesCount > this.PopulationSize || this.SuccessesCount > this.PopulationSize) { return; } Hypergeometric dist = new Hypergeometric(this.PopulationSize, this.SuccessesCount, this.SamplesCount); LineChart cdfchart = new LineChart() { Entries = Enumerable.Range(0, this.SamplesCount + 1).Select(i => new Microcharts.Entry(1 - (float)dist.CumulativeDistribution(i - 1)) { Label = i.ToString(), ValueLabel = (100 - dist.CumulativeDistribution(i - 1) * 100).ToString("0.00") + "%" }), MinValue = 0, MaxValue = 1, LineMode = LineMode.Straight }; this.HyperGeometricCdfChart.Chart = cdfchart; LineChart pdfchart = new LineChart() { Entries = Enumerable.Range(0, this.SamplesCount + 1).Select(i => new Microcharts.Entry((float)dist.Probability(i)) { Label = i.ToString(), ValueLabel = (dist.Probability(i) * 100).ToString("0.00") + "%" }), MinValue = 0, MaxValue = 1, LineMode = LineMode.Straight }; this.HyperGeometricPdfChart.Chart = pdfchart; }
public void ValidateEntropy() { var d = new Hypergeometric(10, 1, 1); var e = d.Entropy; }
public void ValidateProbability(int N, int m, int n, int x) { var d = new Hypergeometric(N, m, n); Assert.AreEqual<double>(SpecialFunctions.Binomial(m, x) * SpecialFunctions.Binomial(N - m, n - x) / SpecialFunctions.Binomial(N, n), d.Probability(x)); }
public void ValidateToString() { var d = new Hypergeometric(10, 1, 1); Assert.AreEqual("Hypergeometric(N = 10, m = 1, n = 1)", d.ToString()); }
public void ValidateCumulativeDistribution(int size, int m, int n, double x, double cdf) { var d = new Hypergeometric(size, m, n); AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 14); }
public void CanSample() { var d = new Hypergeometric(10, 1, 1); d.Sample(); }
public void CanSetSize(int N) { var d = new Hypergeometric(10, 1, 1); d.PopulationSize = N; }
public void CanSetn(int n) { var d = new Hypergeometric(10, 1, 1); d.N = n; }
public void CanSetm(int m) { var d = new Hypergeometric(10, 1, 1); d.M = m; }
public void ValidateSkewness(int N, int m, int n) { var d = new Hypergeometric(N, m, n); Assert.AreEqual<double>((Math.Sqrt(N - 1.0) * (N - 2 * n) * (N - 2 * m)) / (Math.Sqrt(n * m * (N - m) * (N - n)) * (N - 2.0)), d.Skewness); }
public void ValidateProbabilityLn(int N, int m, int n, int x) { var d = new Hypergeometric(N, m, n); Assert.AreEqual(Math.Log(d.Probability(x)), d.ProbabilityLn(x)); }
public void ValidateProbability(int size, int m, int n, int x) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(SpecialFunctions.Binomial(m, x) * SpecialFunctions.Binomial(size - m, n - x) / SpecialFunctions.Binomial(size, n), d.Probability(x)); }
public void ValidateProbabilityLn(int size, int m, int n, int x) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(Math.Log(d.Probability(x)), d.ProbabilityLn(x)); }
public void ValidateMinimum(int population, int success, int draws) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual(Math.Max(0, draws + success - population), d.Minimum); }
public void ValidateMinimum(int N, int m, int n) { var d = new Hypergeometric(N, m, n); Assert.AreEqual(Math.Max(0, n + m - N), d.Minimum); }
public void ValidateProbability(int population, int success, int draws, int x) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual(SpecialFunctions.Binomial(success, x)*SpecialFunctions.Binomial(population - success, draws - x)/SpecialFunctions.Binomial(population, draws), d.Probability(x)); }
public void ValidateMedian() { var d = new Hypergeometric(10, 1, 1); var m = d.Median; }
public void ValidateSkewness(int population, int success, int draws) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual((Math.Sqrt(population - 1.0)*(population - (2*draws))*(population - (2*success)))/(Math.Sqrt(draws*success*(population - success)*(population - draws))*(population - 2.0)), d.Skewness); }
public void SetDrawsFails(int draws) { var d = new Hypergeometric(10, 1, 1); Assert.Throws<ArgumentOutOfRangeException>(() => d.Draws = draws); }
public void SetSuccessFails(int success) { var d = new Hypergeometric(10, 1, 1); Assert.Throws<ArgumentOutOfRangeException>(() => d.Success = success); }
private static void hypergeometric_sample_test() //****************************************************************************80 // // Purpose: // // HYPERGEOMETRIC_SAMPLE_TEST tests HYPERGEOMETRIC_SAMPLE. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 08 April 2016 // // Author: // // John Burkardt // { const int SAMPLE_NUM = 1000; int j; int seed = 123456789; int[] x = new int[SAMPLE_NUM]; Console.WriteLine(""); Console.WriteLine("HYPERGEOMETRIC_SAMPLE_TEST"); Console.WriteLine(" HYPERGEOMETRIC_MEAN computes the Hypergeometric mean;"); Console.WriteLine(" HYPERGEOMETRIC_SAMPLE samples the Hypergeometric distribution;"); Console.WriteLine(" HYPERGEOMETRIC_VARIANCE computes the Hypergeometric variance."); const int n = 10; const int m = 7; const int l = 100; Console.WriteLine(""); Console.WriteLine(" Total number of balls L = " + l + ""); Console.WriteLine(" Number of white balls M = " + m + ""); Console.WriteLine(" Number of balls taken N = " + n + ""); if (!Hypergeometric.hypergeometric_check(n, m, l)) { Console.WriteLine(""); Console.WriteLine("HYPERGEOMETRIC_SAMPLE_TEST - Fatal error!"); Console.WriteLine(" The parameters are not legal."); return; } double mean = Hypergeometric.hypergeometric_mean(n, m, l); double variance = Hypergeometric.hypergeometric_variance(n, m, l); Console.WriteLine(" PDF mean = " + mean + ""); Console.WriteLine(" PDF variance = " + variance + ""); for (j = 0; j < SAMPLE_NUM; j++) { x[j] = Hypergeometric.hypergeometric_sample(n, m, l, ref seed); } mean = typeMethods.i4vec_mean(SAMPLE_NUM, x); variance = typeMethods.i4vec_variance(SAMPLE_NUM, x); int xmax = typeMethods.i4vec_max(SAMPLE_NUM, x); int xmin = typeMethods.i4vec_min(SAMPLE_NUM, x); Console.WriteLine(""); Console.WriteLine(" Sample size = " + SAMPLE_NUM + ""); Console.WriteLine(" Sample mean = " + mean + ""); Console.WriteLine(" Sample variance = " + variance + ""); Console.WriteLine(" Sample maximum = " + xmax + ""); Console.WriteLine(" Sample minimum = " + xmin + ""); }
public void ValidateEntropyThrowsNotSupportedException() { var d = new Hypergeometric(10, 1, 1); Assert.Throws<NotSupportedException>(() => { var e = d.Entropy; }); }
public void ValidateMode(int N, int m, int n) { var d = new Hypergeometric(N, m, n); Assert.AreEqual<double>((n + 1) * (m + 1) / (N + 2), d.Mode); }
public void SetPopulationFails(int population) { var d = new Hypergeometric(10, 1, 1); Assert.Throws<ArgumentOutOfRangeException>(() => d.Population = population); }
public void ValidateCumulativeDistribution(int population, int success, int draws, double x, double cdf) { var d = new Hypergeometric(population, success, draws); AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 10); }
public void ValidateMaximum(int size, int m, int n) { var d = new Hypergeometric(size, m, n); Assert.AreEqual(Math.Min(m, n), d.Maximum); }
public void ValidateMedianThrowsNotSupportedException() { var d = new Hypergeometric(10, 1, 1); Assert.Throws<NotSupportedException>(() => { var m = d.Median; }); }
public void ValidateCumulativeDistribution(int N, int m, int n, double x, double cdf) { var d = new Hypergeometric(N, m, n); AssertHelpers.AlmostEqual(cdf, d.CumulativeDistribution(x), 14); }
public void ValidateMode(int population, int success, int draws) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual((draws + 1)*(success + 1)/(population + 2), d.Mode); }
public void SetnFails(int n) { var d = new Hypergeometric(10, 1, 1); Assert.Throws <ArgumentOutOfRangeException>(() => d.N = n); }
public void ValidateProbabilityLn(int population, int success, int draws, int x) { var d = new Hypergeometric(population, success, draws); Assert.AreEqual(Math.Log(d.Probability(x)), d.ProbabilityLn(x)); }
public void ValidateEntropyThrowsNotSupportedException() { var d = new Hypergeometric(10, 1, 1); Assert.Throws <NotSupportedException>(() => { var e = d.Entropy; }); }
public void ValidateToString() { var d = new Hypergeometric(10, 1, 1); Assert.AreEqual("Hypergeometric(N = 10, M = 1, n = 1)", d.ToString()); }
public void ValidateSkewness(int size, int m, int n) { var d = new Hypergeometric(size, m, n); Assert.AreEqual((Math.Sqrt(size - 1.0) * (size - (2 * n)) * (size - (2 * m))) / (Math.Sqrt(n * m * (size - m) * (size - n)) * (size - 2.0)), d.Skewness); }
public void ValidateMode(int size, int m, int n) { var d = new Hypergeometric(size, m, n); Assert.AreEqual((n + 1) * (m + 1) / (size + 2), d.Mode); }
public override void ExecuteExample() { // <a href="http://en.wikipedia.org/wiki/Binomial_distribution">Binomial distribution</a> MathDisplay.WriteLine("<b>Binomial distribution</b>"); // 1. Initialize the new instance of the Binomial distribution class with parameters P = 0.2, N = 20 var binomial = new Binomial(0.2, 20); MathDisplay.WriteLine(@"1. Initialize the new instance of the Binomial distribution class with parameters P = {0}, N = {1}", binomial.P, binomial.N); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", binomial); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", binomial.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", binomial.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", binomial.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", binomial.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", binomial.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", binomial.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", binomial.Mean.ToString(" #0.00000;-#0.00000")); // Median MathDisplay.WriteLine(@"{0} - Median", binomial.Median.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", binomial.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", binomial.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", binomial.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", binomial.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Binomial distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Binomial distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(binomial.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution">Bernoulli distribution</a> MathDisplay.WriteLine("<b>Bernoulli distribution</b>"); // 1. Initialize the new instance of the Bernoulli distribution class with parameter P = 0.2 var bernoulli = new Bernoulli(0.2); MathDisplay.WriteLine(@"1. Initialize the new instance of the Bernoulli distribution class with parameter P = {0}", bernoulli.P); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", bernoulli); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", bernoulli.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", bernoulli.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", bernoulli.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", bernoulli.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", bernoulli.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", bernoulli.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", bernoulli.Mean.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", bernoulli.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", bernoulli.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", bernoulli.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", bernoulli.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Bernoulli distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Bernoulli distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(bernoulli.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Categorical_distribution">Categorical distribution</a> MathDisplay.WriteLine("<b>Categorical distribution</b>"); // 1. Initialize the new instance of the Categorical distribution class with parameters P = (0.1, 0.2, 0.25, 0.45) var binomialC = new Categorical(new[] { 0.1, 0.2, 0.25, 0.45 }); MathDisplay.WriteLine(@"1. Initialize the new instance of the Categorical distribution class with parameters P = (0.1, 0.2, 0.25, 0.45)"); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", binomialC); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", binomialC.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", binomialC.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", binomialC.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", binomialC.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", binomialC.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", binomialC.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", binomialC.Mean.ToString(" #0.00000;-#0.00000")); // Median MathDisplay.WriteLine(@"{0} - Median", binomialC.Median.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", binomialC.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", binomialC.StdDev.ToString(" #0.00000;-#0.00000")); // 3. Generate 10 samples of the Categorical distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Categorical distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(binomialC.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Conway%E2%80%93Maxwell%E2%80%93Poisson_distribution">ConwayMaxwellPoisson distribution</a> MathDisplay.WriteLine("<b>Conway Maxwell Poisson distribution</b>"); // 1. Initialize the new instance of the ConwayMaxwellPoisson distribution class with parameters Lambda = 2, Nu = 1 var conwayMaxwellPoisson = new ConwayMaxwellPoisson(2, 1); MathDisplay.WriteLine(@"1. Initialize the new instance of the ConwayMaxwellPoisson distribution class with parameters Lambda = {0}, Nu = {1}", conwayMaxwellPoisson.Lambda, conwayMaxwellPoisson.Nu); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", conwayMaxwellPoisson); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", conwayMaxwellPoisson.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", conwayMaxwellPoisson.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", conwayMaxwellPoisson.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", conwayMaxwellPoisson.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", conwayMaxwellPoisson.Mean.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", conwayMaxwellPoisson.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", conwayMaxwellPoisson.StdDev.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the ConwayMaxwellPoisson distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the ConwayMaxwellPoisson distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(conwayMaxwellPoisson.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Discrete_uniform">DiscreteUniform distribution</a> MathDisplay.WriteLine("<b>Discrete Uniform distribution</b>"); // 1. Initialize the new instance of the DiscreteUniform distribution class with parameters LowerBound = 2, UpperBound = 10 var discreteUniform = new DiscreteUniform(2, 10); MathDisplay.WriteLine(@"1. Initialize the new instance of the DiscreteUniform distribution class with parameters LowerBound = {0}, UpperBound = {1}", discreteUniform.LowerBound, discreteUniform.UpperBound); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", discreteUniform); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", discreteUniform.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", discreteUniform.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", discreteUniform.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", discreteUniform.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", discreteUniform.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", discreteUniform.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", discreteUniform.Mean.ToString(" #0.00000;-#0.00000")); // Median MathDisplay.WriteLine(@"{0} - Median", discreteUniform.Median.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", discreteUniform.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", discreteUniform.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", discreteUniform.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", discreteUniform.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the DiscreteUniform distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the DiscreteUniform distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(discreteUniform.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Geometric_distribution">Geometric distribution</a> MathDisplay.WriteLine("<b>Geometric distribution</b>"); // 1. Initialize the new instance of the Geometric distribution class with parameter P = 0.2 var geometric = new Geometric(0.2); MathDisplay.WriteLine(@"1. Initialize the new instance of the Geometric distribution class with parameter P = {0}", geometric.P); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", geometric); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", geometric.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", geometric.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", geometric.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", geometric.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", geometric.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", geometric.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", geometric.Mean.ToString(" #0.00000;-#0.00000")); // Median MathDisplay.WriteLine(@"{0} - Median", geometric.Median.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", geometric.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", geometric.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", geometric.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", geometric.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Geometric distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Geometric distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(geometric.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Hypergeometric_distribution">Hypergeometric distribution</a> MathDisplay.WriteLine("<b>Hypergeometric distribution</b>"); // 1. Initialize the new instance of the Hypergeometric distribution class with parameters PopulationSize = 10, M = 2, N = 8 var hypergeometric = new Hypergeometric(30, 15, 10); MathDisplay.WriteLine(@"1. Initialize the new instance of the Hypergeometric distribution class with parameters Population = {0}, Success = {1}, Draws = {2}", hypergeometric.Population, hypergeometric.Success, hypergeometric.Draws); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", hypergeometric); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", hypergeometric.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", hypergeometric.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", hypergeometric.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", hypergeometric.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", hypergeometric.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", hypergeometric.Mean.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", hypergeometric.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", hypergeometric.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", hypergeometric.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", hypergeometric.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Hypergeometric distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Hypergeometric distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(hypergeometric.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Negative_binomial">NegativeBinomial distribution</a> MathDisplay.WriteLine("<b>Negative Binomial distribution</b>"); // 1. Initialize the new instance of the NegativeBinomial distribution class with parameters P = 0.2, R = 20 var negativeBinomial = new NegativeBinomial(20, 0.2); MathDisplay.WriteLine(@"1. Initialize the new instance of the NegativeBinomial distribution class with parameters P = {0}, N = {1}", negativeBinomial.P, negativeBinomial.R); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", negativeBinomial); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", negativeBinomial.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", negativeBinomial.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", negativeBinomial.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", negativeBinomial.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", negativeBinomial.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", negativeBinomial.Mean.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", negativeBinomial.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", negativeBinomial.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", negativeBinomial.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", negativeBinomial.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the NegativeBinomial distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the NegativeBinomial distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(negativeBinomial.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Poisson_distribution">Poisson distribution</a> MathDisplay.WriteLine("<b>Poisson distribution</b>"); // 1. Initialize the new instance of the Poisson distribution class with parameter Lambda = 1 var poisson = new Poisson(1); MathDisplay.WriteLine(@"1. Initialize the new instance of the Poisson distribution class with parameter Lambda = {0}", poisson.Lambda); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", poisson); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", poisson.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", poisson.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", poisson.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", poisson.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", poisson.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", poisson.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", poisson.Mean.ToString(" #0.00000;-#0.00000")); // Median MathDisplay.WriteLine(@"{0} - Median", poisson.Median.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", poisson.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", poisson.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", poisson.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", poisson.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Poisson distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Poisson distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(poisson.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); // <a href="http://en.wikipedia.org/wiki/Zipf_distribution">Zipf distribution</a> MathDisplay.WriteLine("<b>Zipf distribution</b>"); // 1. Initialize the new instance of the Zipf distribution class with parameters S = 5, N = 10 var zipf = new Zipf(5, 10); MathDisplay.WriteLine(@"1. Initialize the new instance of the Zipf distribution class with parameters S = {0}, N = {1}", zipf.S, zipf.N); MathDisplay.WriteLine(); // 2. Distributuion properties: MathDisplay.WriteLine(@"2. {0} distributuion properties:", zipf); // Cumulative distribution function MathDisplay.WriteLine(@"{0} - Сumulative distribution at location '3'", zipf.CumulativeDistribution(3).ToString(" #0.00000;-#0.00000")); // Probability density MathDisplay.WriteLine(@"{0} - Probability mass at location '3'", zipf.Probability(3).ToString(" #0.00000;-#0.00000")); // Log probability density MathDisplay.WriteLine(@"{0} - Log probability mass at location '3'", zipf.ProbabilityLn(3).ToString(" #0.00000;-#0.00000")); // Entropy MathDisplay.WriteLine(@"{0} - Entropy", zipf.Entropy.ToString(" #0.00000;-#0.00000")); // Largest element in the domain MathDisplay.WriteLine(@"{0} - Largest element in the domain", zipf.Maximum.ToString(" #0.00000;-#0.00000")); // Smallest element in the domain MathDisplay.WriteLine(@"{0} - Smallest element in the domain", zipf.Minimum.ToString(" #0.00000;-#0.00000")); // Mean MathDisplay.WriteLine(@"{0} - Mean", zipf.Mean.ToString(" #0.00000;-#0.00000")); // Mode MathDisplay.WriteLine(@"{0} - Mode", zipf.Mode.ToString(" #0.00000;-#0.00000")); // Variance MathDisplay.WriteLine(@"{0} - Variance", zipf.Variance.ToString(" #0.00000;-#0.00000")); // Standard deviation MathDisplay.WriteLine(@"{0} - Standard deviation", zipf.StdDev.ToString(" #0.00000;-#0.00000")); // Skewness MathDisplay.WriteLine(@"{0} - Skewness", zipf.Skewness.ToString(" #0.00000;-#0.00000")); MathDisplay.WriteLine(); // 3. Generate 10 samples of the Zipf distribution MathDisplay.WriteLine(@"3. Generate 10 samples of the Zipf distribution"); for (var i = 0; i < 10; i++) { MathDisplay.Write(zipf.Sample().ToString("N05") + @" "); } MathDisplay.FlushBuffer(); MathDisplay.WriteLine(); MathDisplay.WriteLine(); }
public void ValidateMedianThrowsNotSupportedException() { var d = new Hypergeometric(10, 1, 1); Assert.Throws <NotSupportedException>(() => { var m = d.Median; }); }