2 个版本
使用旧的 Rust 2015
0.1.1 | 2017 年 6 月 11 日 |
---|---|
0.1.0 | 2017 年 6 月 11 日 |
#21 in #markov
在 zbusdg 中使用
34KB
685 行
markov-chain
Rust 的马尔可夫链库。
文档
Crates.io
特性
- 训练任意类型的序列
- N 阶节点
- 专门的字符串生成和训练
- 通过 serde 进行序列化
- 生成实用工具
愿望清单
- 一次获取一个随机项的迭代器
- 无限链生成
- 在实用模块中实现 serde 文件写入
- 完成文档,包含示例
构建
默认情况下,库不会构建完整的 markov-util
二进制文件。要包含二进制文件在构建中,请将标志 --features "generator serde_cbor serde_yaml"
添加到 cargo build
,以生成二进制文件。另外,如果您不希望使用 CBOR 或 YAML 支持,可以移除您想要省略的任何内容。 请注意,至少需要一个 serde_* 库来构建 markov-util。
基本用法
在您的 Cargo.toml 文件中,确保在 [dependencies]
部分下有 markov_chain = "0.1"
这一行。
可以使用实现 Clone
、Hash
和 Eq
的任何类型创建马尔可夫链,以及一些顺序(这是马尔可夫链中每个节点上的项目数)。
它可以与数字一起使用
use markov_chain::Chain;
let mut chain = Chain::new(1); // 1 is the order of the chain
// Train the chain on some vectors
chain.train(vec![1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 1])
.train(vec![5, 4, 3, 2, 1]);
// Generate a sequence and print it out
let sequence = chain.generate();
for number in sequence {
print!("{} ", number);
}
println!("");
Chain<T>
还从 serde Serialize
和 Deserialize
特性中派生,因此任何派生这些特性的 T
都可以转换为序列化形式。这对于写入/读取文件很有用。 (文件写入在待办事项列表中)。
// TODO: file writing example
许可证
ISC,有关详细信息,请参阅 COPYING。
依赖项
~5MB
~106K SLoC