Currently, there are a number of distributions defined in commons math, but the interface for Distribution and ContinuousDistribution doesn't provide for the computation of the PDF at a particular point.

It is common for it to be necessary to compute the density function, for example in the Metropolis algorithm.

It is also pretty common for it to be very difficult to compute a density function or for the density function to be undefined as certain points. Only the cumulative density is mathematically assured.

Thus, I propose to create a new interface HasDensityFunction<T> that requires the implementation of a double density(T) method. T is the type of the argument for the density function which would be Double in the case of most univariate statistics, but could, for instance, be a vector of doubles for a Dirichlet distribution or a vector of integers for a Multinomial.

This is a patch that adds the proposed mechanism.