2 crate 家族

原文链接: https://rust-random.github.io/book/crates.html

                                           ┌ statrs
                                           ├ rand_distr
          rand_core ┬───────────────┬ rand ┘
                    ├ chacha20 ─────┤
                    ├ getrandom ────┘
                    ├ rand_chacha
                    ├ rand_hc
                    ├ rand_isaac
                    ├ rand_jitter
                    ├ rand_pcg
                    ├ rand_sfc
                    ├ rand_seeder
                    ├ rand_xorshift
                    └ rand_xoshiro

接口

rand_core 定义了 RngCore 及其他核心 trait,以及若干用于实现 RNG 的辅助工具。

getrandom crate 提供了围绕平台特定随机数源的低级 API。

伪随机生成器

以下 crate 实现了伪随机数生成器(参见我们的 RNG):

  • chacha20 提供使用 ChaCha 密码的生成器(通过 chacha 特性在 rand 内部使用)
  • rand_chacha 也提供 ChaCha 密码生成器(为此目的的 chacha20 前身;为兼容性而保留)
  • rand_hc 实现使用 HC-128 密码的生成器
  • rand_isaac 实现 ISAAC 生成器
  • rand_pcg 实现一小部分 PCG 生成器
  • rand_sfc 实现 SFC(Small Fast Counter)生成器
  • rand_xorshift 实现基本的 Xorshift 生成器
  • rand_xoshiro 实现 SplitMix 和 Xoshiro 生成器

例外地,SmallRng 直接在 rand 中实现。

此外,rand_jitter 提供基于抖动的熵源,rand_seeder 从任意可哈希数据派生种子(用作播种 RNG 中的构建块)。

rand(主 crate)

rand crate 旨在方便使用常见的随机数功能。这涉及多个方面:

  • rngs 模块提供若干便捷的生成器
  • distr 模块涉及随机值的采样
  • seq 模块涉及从序列中采样和打乱
  • Rng trait 提供若干生成随机值的便捷方法
  • random 函数提供一次调用即可生成的便捷方式

分布

rand crate 仅实现从最常见的随机数分布中采样:均匀分布和加权采样。对于其他一切,

  • rand_distr 提供从多种其他分布中快速采样,包括正态(高斯)、二项、泊松、单位圆等
  • statrs 是 C# Math.NET 库的移植,实现了许多相同的分布(或多或少),以及 PDF 和 CDF 函数、error、beta、gamma 和 logistic 特殊函数,外加若干实用工具。(为清晰起见,statrs 不是 Rand 库的一部分。)
最后修改 August 23, 2026: 更新 (499855b16)