package nl.fontys.sofa.limo.domain.component.event.distribution;
import nl.fontys.sofa.limo.domain.component.event.distribution.input.DoubleInputValue;
import nl.fontys.sofa.limo.domain.component.event.distribution.input.IntegerInputValue;
/**
* Poisson distribution implementation.
*
* @author Dominik Kaisers {@literal <d.kaisers@student.fontys.nl>}
*/
public class PoissonDistribution extends Distribution {
public PoissonDistribution() {
super(new DoubleInputValue("Lambda", 0.0), new IntegerInputValue("K", 0));
this.description = "The Poisson distribution is a discrete\n"
+ "probability distribution that expresses the\n"
+ "probability of a given number of events occurring\n"
+ "in a fixed interval of time and/or space if these\n"
+ "events occur with a known average rate and\n"
+ "independently of the time since the last event.\n"
+ "Lambda > 0 (real number)\n"
+ "K is element of {0,1,2,3,...}";
}
@Override
protected double calculateProbability() {
Double lambda = ((DoubleInputValue) inputValues.get("Lambda")).getValue();
int k = ((IntegerInputValue) inputValues.get("K")).getValue();
return new org.apache.commons.math3.distribution.PoissonDistribution(lambda).probability(k);
}
}