### Question:
DiscreteDistributions { public static double poisson(int k, double lamda) { if(k<0 || lamda<0) { throw new IllegalArgumentException("All the parameters must be positive."); } double probability = poissonCdf(k,lamda); if(k>0) { probability -= poissonCdf(k-1,lamda); } return probability; }  static double bernoulli(boolean k, double p); static double bernoulliCdf(int k, double p); static double binomial(int k, double p, int n); static double binomialCdf(int k, double p, int n); static double geometric(int k, double p); static double geometricCdf(int k, double p); static double negativeBinomial(int n, int r, double p); static double negativeBinomialCdf(int n, int r, double p); static double uniform(int n); static double uniformCdf(int k, int n); static double hypergeometric(int k, int n, int Kp, int Np); static double hypergeometricCdf(int k, int n, int Kp, int Np); static double poisson(int k, double lamda); static double poissonCdf(int k, double lamda);  }### Answer:
@Test public void testPoisson() { logger.info("Poisson"); int k = 3; double lamda = 5.0; double expResult = 0.14037389583692; double result = DiscreteDistributions.poisson(k, lamda); assertEquals(expResult, result, Constants.DOUBLE_ACCURACY_HIGH); }