2个版本
0.1.1 | 2019年5月8日 |
---|---|
0.1.0 | 2019年5月7日 |
#17 in #eq
用于gmarkov
9KB
127 行
gmarkov-lib
此库提供了MarkovChain
数据结构。马尔可夫链通过许多有限序列的项目进行喂养,并输出一个序列来尝试模仿训练数据。在我的实现中,输入必须是一个迭代器,其中项是Eq + Hash + Clone
(或其别名ChainItem
)。
此库通常用于char
的序列,但可以用于几乎任何数据类型,如数字或枚举。
更多信息请参阅文档:https://docs.rs/gmarkov-lib
lib.rs
:
一个提供马尔可夫链数据结构的库。
MarkovChain
结构允许您输入几个项目的序列,并输出一个看起来非常相似,但实际上是随机生成的序列。
这是我的命令行应用程序gmarkov
的库。
示例
extern crate gmarkov_lib;
use std::fs::File;
use std::io::{Result, BufRead, BufReader};
use gmarkov_lib::MarkovChain;
fn main() -> Result<()> {
let mut chain = MarkovChain::with_order::<char>(2);
let reader = BufReader::new(File::open("examples/dictionary_sample.txt")?);
for line in reader.lines() {
chain.feed(line?.chars());
}
println!("New word: {}", chain.into_iter().collect::<String>());
Ok(())
}
上面的简短程序将创建一个2阶马尔可夫链,然后将其喂以来自词典(在examples/dictionary_sample.txt)的100个随机单词,然后打印出一个新的随机单词。
依赖关系
~560–780KB
~10K SLoC