Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

metromc

Markov chain Monte Carlo (MCMC) sampling using the Independence Metropolis-Hastings algorithm with uniform transition kernel.

Crates.io docs.rs Build Status

Uses the tinyrand RNG to sample at a rate of ~50M samples/sec.

Supports the following distributions:

It is easy to add more univariate distributions by supplying an implementation of a PDF or wrapping one from the excellent statrs crate.

Example

Draw samples from the Gaussian distribution using MCMC.

use std::ops::RangeInclusive;
use tinyrand::Wyrand;
use metromc::gaussian::Gaussian;
use metromc::sampler::{Config, Sampler};

// sample from the Gaussian with µ=0.0 and σ=1.0, in the interval [-5.0, 5.0]
let sampler = Sampler::new(Config {
    rand: Wyrand::default(),
    dist: Gaussian::new(0.0, 1.0),
    range: -5.0..=5.0,
});

// take 1,000 samples after dropping the first 10
for sample in sampler.skip(10).take(1_000) {
    println!("{sample:.6}");
}

About

Markov chain Monte Carlo sampling

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages