5.1.7. 随机值 crates 小结
我们在随机值计算中,主要引入了 rand crate 和 rand_distr crate,其中后者是对前者的补充。在此,再做一些扩展介绍。但这些介绍都是概要性的,若要详细了解,请打开实例标题之下的 url,参阅 crate 官方文档。
5.1.7.1. rand
rand crate 是 Rust 生态中的一个随机数生成工具。其提供了如下功能:
- 生成随机数;
- 将生成的随机数进行类型转换、分发;
- 一些与随机性相关的算法。
rand crate 是由一系列 crate 组成的,rand crate 提供了主用户界面。如果需要额外的分发类型,可以使用 rand_distr crate 或者 statrs crate 来补充。具体结构关系如图 5.1.7.1-1 所示。
getrandom ┐
└ rand_core ┐
├ rand_chacha ┐
├ rand_hc ┤
├ rand_pcg ┤
└─────────────┴ rand ┐
├ rand_distr
└ statrs
图 5.1.7.1-1
5.1.7.2. rand_distr
rand_distr crate 实现了诸多概率分布类型,如均匀分布、正态分布(Normal distribution)、柯西分布(Cauchy distribution)等。rand_distr crate 是 rand::distributions
模块的一个超级集合,提供了以下概率分布:
- 线性增长相关(例如误差、偏移量等):
正态(Normal)
分布,以标准正态(StandardNormal)
为原语柯西(Cauchy)
分布
- 伯努利试验相关(给定概率的
是/否
事件):二项(Binomial)
分布
- 指数增长相关(例如价格、收入、人口等):
对数正态(LogNormal)
分布
- 给定条件下独立事件的发生率相关:
帕雷托(Pareto)
分布泊松(Poisson)
分布指数(Exponential)
分布,以结构体Exp1
为原语韦布尔(Weibull)
分布
- 伽马分布、导出分布:
伽马(Gamma)
分布卡方(ChiSquared)
分布学生-T(StudentT)
分布费歇尔-F(FisherF)
分布
- 三角学分布:
Beta
分布三角(Triangular)
分布
- 多元概率分布:
狄利克雷(Dirichlet)
分布UnitSphere
分布UnitBall
分布UnitCircle
分布UnitDisc
分布
- 其它分布:
逆高斯(InverseGaussian)
分布正态逆高斯(NormalInverseGaussian)
分布
在上图 5.1.7.1-1 结构中已经展示,rand_distr crate 是对 rand crate 的补充。