2 个版本

使用旧的 Rust 2015

0.1.1 2017 年 6 月 11 日
0.1.0 2017 年 6 月 11 日

#21 in #markov


zbusdg 中使用

ISC 许可证

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" 这一行。

可以使用实现 CloneHashEq 的任何类型创建马尔可夫链,以及一些顺序(这是马尔可夫链中每个节点上的项目数)。

它可以与数字一起使用

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 SerializeDeserialize 特性中派生,因此任何派生这些特性的 T 都可以转换为序列化形式。这对于写入/读取文件很有用。 (文件写入在待办事项列表中)。

// TODO: file writing example

许可证

ISC,有关详细信息,请参阅 COPYING

依赖项

~5MB
~106K SLoC