A Julia package for probability distributions and associated functions.
987 Stars
Updated Last
1 Year Ago
Started In
November 2012


Build Status Coverage Status

A Julia package for probability distributions and associated functions. Particularly, Distributions implements:

  • Moments (e.g mean, variance, skewness, and kurtosis), entropy, and other properties
  • Probability density/mass functions (pdf) and their logarithm (logpdf)
  • Moment generating functions and characteristic functions
  • Sampling from a population or from a distribution
  • Maximum likelihood estimation

Note: The functionalities related to conjugate priors have been moved to the ConjugatePriors package.



Reporting issues

If you have a bug linked with Distributions, check that it has not been reported yet on the issues of the repository. If not, you can file a new issue, add your version of the package which you can get with this command in the Julia REPL:

julia> ]status Distributions

Be exhaustive in your report, summarize the bug, and provide: a Minimal Working Example (MWE), what happens, and what you expected to happen.

Workflow with Git and GitHub

To contribute to the package, fork the repository on GitHub, clone it and make modifications on a new branch, do not commit modifications on master. Once your changes are made, push them on your fork and create the Pull Request on the main repository.


Distributions is a central package which many rely on, the following are required for contributions to be accepted:

  1. Docstrings must be added to all interface and non-trivial functions.

  2. Tests validating the modified behavior in the test folder. If new test files are added, do not forget to add them in test/runtests.jl. Cover possible edge cases. Run the tests locally before submitting the PR.

  3. At the end of the tests, Test.detect_ambiguities(Distributions) is run to check method ambiguities. Verify that your modified code did not yield method ambiguities.

  4. Make corresponding modifications to the docs folder, build the documentation locally and verify that your modifications display correctly and did not yield warnings. To build the documentation locally, you first need to instantiate the docs/ project:

    julia --project=docs/
    pkg> instantiate
    pkg> dev .

    Then use julia --project=docs/ docs/make.jl to build the documentation.


See CITATION.bib, or use the DOI badge above.