[][src]Struct markovian::TimedMarkovChain

pub struct TimedMarkovChain<N, T, F, R> { /* fields omitted */ }

Markov Chain in continuous time, with arbitrary space.

Rust allows for more than only exponential time in the transitions, so does this crate.

Remarks

If your transition function transition could reuse of structs that implement the Distribution<T> trait in order to sample the next state, then, for the best performance possible, create your own struct that implements the Transition<T, (N, T)> trait.

Implementations

impl<N, T, F, R> TimedMarkovChain<N, T, F, R> where
    R: Rng,
    F: Transition<T, (N, T)>,
    N: From<f64>, 
[src]

pub fn new(state: T, transition: F, rng: R) -> Self[src]

Trait Implementations

impl<N: Clone, T: Clone, F: Clone, R: Clone> Clone for TimedMarkovChain<N, T, F, R>[src]

impl<N: Debug, T: Debug, F: Debug, R: Debug> Debug for TimedMarkovChain<N, T, F, R>[src]

impl<N, T, F, R> Distribution<(N, T)> for TimedMarkovChain<N, T, F, R> where
    T: Debug + Clone,
    F: Transition<T, (N, T)>,
    R: Rng,
    N: From<f64>, 
[src]

fn sample<R2: ?Sized>(&self, rng: &mut R2) -> (N, T) where
    R2: Rng
[src]

Sample a possible next state.

impl<N, T, F, R> Iterator for TimedMarkovChain<N, T, F, R> where
    T: Debug + Clone,
    F: Transition<T, (N, T)>,
    R: Rng
[src]

type Item = (N, T)

The type of the elements being iterated over.

impl<N, T, F, R> State for TimedMarkovChain<N, T, F, R> where
    T: Debug + Clone
[src]

type Item = T

impl<N, T, F, R> StateIterator for TimedMarkovChain<N, T, F, R> where
    T: Debug + Clone,
    F: Transition<T, (N, T)>,
    R: Rng,
    N: From<f64>, 
[src]

Auto Trait Implementations

impl<N, T, F, R> RefUnwindSafe for TimedMarkovChain<N, T, F, R> where
    F: RefUnwindSafe,
    N: RefUnwindSafe,
    R: RefUnwindSafe,
    T: RefUnwindSafe

impl<N, T, F, R> Send for TimedMarkovChain<N, T, F, R> where
    F: Send,
    N: Send,
    R: Send,
    T: Send

impl<N, T, F, R> Sync for TimedMarkovChain<N, T, F, R> where
    F: Sync,
    N: Sync,
    R: Sync,
    T: Sync

impl<N, T, F, R> Unpin for TimedMarkovChain<N, T, F, R> where
    F: Unpin,
    N: Unpin,
    R: Unpin,
    T: Unpin

impl<N, T, F, R> UnwindSafe for TimedMarkovChain<N, T, F, R> where
    F: UnwindSafe,
    N: UnwindSafe,
    R: UnwindSafe,
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<I> IteratorRandom for I where
    I: Iterator
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,