Entromatica is a library for constructing, simulating and analyzing markov chains.
The simulation module contains primarily the Simulation struct, which takes an initial state and a StateTransitionGenerator. This generator is a function that takes a state and returns a list of the next states in the markov chain with their respective relative probabilities.
// This is a simple onedimensional random walk use entromatica::prelude::*; use std::sync::Arc; // The initial state. It has to be Hash + Clone + Send + Sync + PartialEq + Eq + Debug let initial_state: i32 = 0; // The state transition generator. The simulation panics if the probabilities don't sum to 1.0 let state_transition_generator = Arc::new(|state: i32| vec![(state + 1, "next", 0.5), (state - 1, "previous", 0.5)]); let mut simulation = Simulation::new(initial_state, state_transition_generator); // The Shannon-entropy at the given time assert_eq!(simulation.entropy(0), 0.0); simulation.next_step(); assert_eq!(simulation.entropy(1), 1.0);