public void ProbabilityMassFunctionTest()
{
double[] expected =
{
0.0, 0.0260838446329553, 0.104335628936830, 0.198238170750635,
0.237886375826922, 0.202203904741285, 0.129410809619744,
0.0647055601029058, 0.0258822861585249, 0.00841176318971187,
0.00224314223412042
};
int trials = 20;
double probability = 0.166667;
BinomialDistribution target = new BinomialDistribution(trials, probability);
for (int i = 0; i < expected.Length; i++)
{
double actual = target.ProbabilityMassFunction(i - 1);
Assert.AreEqual(expected[i], actual, 1e-10);
Assert.IsFalse(Double.IsNaN(actual));
double logActual = target.LogProbabilityMassFunction(i - 1);
Assert.AreEqual(Math.Log(expected[i]), logActual, 1e-10);
Assert.IsFalse(Double.IsNaN(actual));
}
}