5 个版本 (3 个稳定版)
1.1.3 | 2020年1月5日 |
---|---|
1.0.0 |
|
0.2.0 | 2020年1月5日 |
0.1.0 | 2019年11月13日 |
#15 in #markov-chain
每月22次下载
12KB
143 行
Chainkov
HashMap / tuple-backed 马尔可夫链
安装
- 将依赖项添加到项目的 Cargo.toml 文件中
// Cargo.toml
[dependencies]
chainkov = "0.1.0"
- 运行 cargo build
cargo build
使用方法
extern crate chainkov;
use chainkov::*;
let mut m = MarkovChain::new();
// MarkovChain{ transition_prob: {} }
m.add_state_choice("a", ("b".to_string(), 1.0));
// MarkovChain { transition_prob: {"a": [("b", 0.4)]} }
m.add_state_choice("b", ("c".to_string(), 1.0));
// MarkovChain { transition_prob: {"a": [("b", 1.0)], "b": [("c", 1.0)]} }
m.add_state_choice("c", ("a".to_string(), 1.0));
// MarkovChain { transition_prob: {"c": [("a", 1.0)], "a": [("b", 1.0)], "b": [("c", 1.0)]} }
m.generate_states("a".to_string(), 4);
// ["b", "c", "a", "b"]
m.next_state("a".to_string());
// "b"
// incrementing when a state already exists
m.increment_state("a", "b");
// MarkovChain { transition_prob: {"c": [("a", 1.0)], "a": [("b", 2.0)], "b": [("c", 1.0)]} }
// incrementing when a key exists but the state transition doesn't
m.increment_state("a", "c");
// MarkovChain { transition_prob: {"c": [("a", 1.0)], "a": [("b", 2.0), ("c", 1.0)], "b": [("c", 1.0)]} }
// incrementing when a key exists but the state transition doesn't
m.increment_state("a", "c");
// MarkovChain { transition_prob: {"c": [("a", 1.0)], "a": [("b", 2.0), ("c", 1.0)], "b": [("c", 1.0)]} }
// incrementing when there is a new state in the MarkovChain
m.increment_state("e", "a");
// MarkovChain { transition_prob: {"e": [("a", 1.0)], "c": [("a", 1.0)], "a": [("b", 2.0), ("c", 1.0)], "b": [("c", 1.0)]} }
依赖项
~520KB