public void ConstructorTest() { var bern = new BernoulliDistribution(mean: 0.42); // Common measures double mean = bern.Mean; // 0.42 double median = bern.Median; // 0.0 double var = bern.Variance; // 0.2436 double mode = bern.Mode; // 0.0 // Probability mass functions double pdf = bern.ProbabilityMassFunction(k: 1); // 0.42 double lpdf = bern.LogProbabilityMassFunction(k: 0); // -0.54472717544167193 // Cumulative distribution function double cdf = bern.DistributionFunction(k: 0); // 0.58 double ccdf = bern.ComplementaryDistributionFunction(k: 0); // 0.42 // Quantile function int icdf0 = bern.InverseDistributionFunction(p: 0.57); // 0 int icdf1 = bern.InverseDistributionFunction(p: 0.59); // 1 double hf = bern.HazardFunction(x: 0); // 1.3809523809523814 double chf = bern.CumulativeHazardFunction(x: 0); // 0.86750056770472328 string str = bern.ToString(CultureInfo.InvariantCulture); // "Bernoulli(x; p = 0.42, q = 0.58)" Assert.AreEqual(0.42, mean); Assert.AreEqual(0.0, median); Assert.AreEqual(0.2436, var); Assert.AreEqual(0.0, mode); Assert.AreEqual(0.86750056770472328, chf, 1e-10); Assert.AreEqual(0.58, cdf, 1e-10); Assert.AreEqual(0.42, pdf); Assert.AreEqual(-0.54472717544167193, lpdf); Assert.AreEqual(1.3809523809523814, hf, 1e-10); Assert.AreEqual(0.42, ccdf, 1e-10); Assert.AreEqual(0, icdf0); Assert.AreEqual(1, icdf1); Assert.AreEqual("Bernoulli(x; p = 0.42, q = 0.58)", str); var range1 = bern.GetRange(0.95); var range2 = bern.GetRange(0.99); var range3 = bern.GetRange(0.01); Assert.AreEqual(0, range1.Min); Assert.AreEqual(1.0, range1.Max); Assert.AreEqual(0, range2.Min); Assert.AreEqual(1.0, range2.Max); Assert.AreEqual(0, range3.Min); Assert.AreEqual(1.0, range3.Max); }