2 crate 家族
2 分钟阅读
┌ 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 生成器
此外,rand_jitter 提供基于抖动的熵源,rand_seeder 从任意可哈希数据派生种子(用作播种 RNG 中的构建块)。
rand(主 crate)
rand crate 旨在方便使用常见的随机数功能。这涉及多个方面:
分布
rand crate 仅实现从最常见的随机数分布中采样:均匀分布和加权采样。对于其他一切,
rand_distr提供从多种其他分布中快速采样,包括正态(高斯)、二项、泊松、单位圆等statrs是 C# Math.NET 库的移植,实现了许多相同的分布(或多或少),以及 PDF 和 CDF 函数、error、beta、gamma 和 logistic 特殊函数,外加若干实用工具。(为清晰起见,statrs不是 Rand 库的一部分。)