使用旧 Rust 2015
0.6.4 |
|
---|
#116 in #rng
520KB
8K SLoC
Rand
Rand 是一个用于随机数生成的 Rust 库。
Rand 提供生成随机数、将它们转换为有用的类型和分布以及一些随机相关算法的实用工具。
Rand 的核心随机数生成特性位于 rand_core 包中,但也在此处公开;RNG 实现应优先使用 rand_core
,而大多数其他用户应依赖 rand
。
文档
使用方法
将以下内容添加到您的 Cargo.toml
[dependencies]
rand = "0.6"
要开始使用 Rand,请参阅 书籍。
版本
Rand 库尚不稳定,但我们小心地限制了破坏性更改,并在可能的情况下通过弃用进行警告。补丁版本从不引入破坏性更改。以下为支持的次要版本
- 0.6 版本于 2018 年 11 月发布,重新设计了
seq
模块,将大多数 PRNG 移动到外部包中,以及许多小更改。 - 0.5 版本于 2018 年 5 月发布,作为一次重大重组(引入了
RngCore
和rand_core
,并弃用了Rand
以及之前的分布特性)。 - 0.4 版本于 2017 年 12 月发布,但与 0.3 系列相比几乎没有破坏性更改。
有关详细信息,请参阅 变更日志。
当升级到下一个次要系列(尤其是 0.4 → 0.5)时,我们建议阅读 升级指南。
Rust 版本要求
自 0.5 版本以来,Rand 需要 Rustc 版本 1.22 或更高版本。Rand 0.4 和 0.3(自大约 2017 年 6 月以来)需要 Rustc 版本 1.15 或更高版本。Rand 代码的子集可能与旧版本的 Rust 一起工作,但这不受支持。
Travis CI 始终有一个使用固定版本 Rustc 的构建版本,以匹配支持的最老 Rust 版本。当前政策是在必要时可以更新任何 Rand 版本,但必须在变更日志中记录更改。
为了避免不必要地更改所需版本,我们使用一个build.rs
脚本来自动检测编译器版本,并自动启用某些功能或更改代码路径。由于这会使得无意中使用需要较新Rust版本的特性变得容易,如果您需要与特定版本兼容,我们建议使用固定的Rustc版本进行测试。
包功能
Rand默认启用std
和rand_os
功能
std
启用依赖于std
库的功能,并隐含alloc
和rand_os
rand_os
启用rand_os
包,rngs::OsRng
并启用其使用;该功能的持续存在不能保证,因此建议用户指定std
以下为可选功能
- 可以使用
alloc
代替std
以提供Vec
和Box
。 log
通过log
包启用一些日志记录。nightly
启用所有不稳定特性(simd_support
)。serde1
通过Serde版本1启用一些类型的序列化。simd_support
启用SIMD类型(整数和浮点数)的统一抽样。stdweb
通过结合stdweb
和cargo-web
,在wasm32-unknown-unknown
上启用对OsRng
的支持。wasm-bindgen
通过wasm-bindgen
在wasm32-unknown-unknown
上启用对OsRng
的支持。
通过设置default-features = false
激活no_std
模式;这会移除依赖于std
的功能
thread_rng()
和random()
不可用,因为它们需要线程局部存储和熵源。OsRng
和EntropyRng
不可用。JitterRng
代码仍然存在,但必须通过JitterRng::new_with_timer
提供纳秒级定时器- 由于没有外部熵可用,无法使用
FromEntropy
特质(用户必须提供种子)创建带有新鲜种子的生成器。 - 由于在
core
中没有提供exp
和log
函数,因此某些非线性分布不可用。 - 除非使用
alloc
功能,否则seq
-uence模块的大部分功能不可用(许多API和实现需要Vec
)。
许可
Rand在MIT许可和Apache许可(版本2.0)的条款下分发。
有关详细信息,请参阅LICENSE-APACHE、LICENSE-MIT和COPYRIGHT。
依赖关系
~0–1MB
~18K SLoC