69 个版本

0.9.0-alpha.22024 年 7 月 29 日
0.9.0-alpha.12024 年 3 月 18 日
0.9.0-alpha.02024 年 2 月 18 日
0.8.5 2022 年 2 月 14 日
0.3.4 2015 年 3 月 31 日

#1 in 算法

Download history 2629888/week @ 2024-05-04 2761289/week @ 2024-05-11 2775654/week @ 2024-05-18 2702490/week @ 2024-05-25 2988014/week @ 2024-06-01 2933965/week @ 2024-06-08 2860800/week @ 2024-06-15 2873889/week @ 2024-06-22 2676530/week @ 2024-06-29 2926324/week @ 2024-07-06 2863165/week @ 2024-07-13 2997797/week @ 2024-07-20 3005398/week @ 2024-07-27 2987452/week @ 2024-08-03 3144221/week @ 2024-08-10 2631515/week @ 2024-08-17

12,281,510 每月下载量
用于 39,686 个 crate (15,660 直接使用)

MIT/Apache

415KB
7K SLoC

Rand

Test Status Crate Book API API

Rand 是一个用于随机数生成的 Rust 库,具有以下特点

值得一提的是 rand 不是什么

  • 小型。大多数底层 crate 都很小,但更高层的 randrand_distr 每个都包含大量功能。
  • 简单(实现)。我们注重正确性、速度和灵活性,但不注重简洁性。如果您喜欢简单小巧的库,有其他选择,包括 fastrandoorandom
  • 慢。我们认真对待性能,同时考虑新分布的设置时间、常用参数以及当前采样器的参数。

文档

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
rand = "=0.9.0-alpha.2"
rand_distr = "=0.5.0-alpha.2"

要开始使用 Rand,请参阅 书籍

版本

Rand 已经 成熟(适用于通用用途,具有不常发布的破坏性较小的版本)但尚未达到 1.0。当前版本包括

  • 0.8 版本于 2020 年 12 月发布,包含许多小变化。
  • 0.9 版本正在开发中,包含许多小变化。

有关更多详细信息,请参阅 变更日志升级指南

包功能

Rand 默认启用以下功能

  • std 启用依赖于 std 库的功能
  • alloc(由 std 暗示)启用需要分配器的功能
  • getrandom(由 std 暗示)是一个可选依赖,提供 rngs::OsRng 的代码
  • std_rng 启用包含 StdRngthread_rngrandom(后两者 需要启用 std

可选,以下依赖项可以启用

  • log 通过 log 启用日志记录

此外,以下功能配置 Rand

  • small_rng 启用包含 SmallRng PRNG
  • nightly 包含需要夜间 Rust 的某些添加
  • simd_support(实验性)启用 SIMD 值的采样(均匀随机的 SIMD 整数和浮点数),需要夜间 Rust

请注意,夜间功能不稳定,因此并非所有库和编译器版本都将兼容。这对于 Rand 的实验性 simd_support 功能尤其如此。

Rand 在 no_std 模式下支持有限的功能(通过 default-features = false 启用)。在这种情况下,OsRngfrom_os_rng 不可用(除非启用 getrandom),大部分 seq 不可用(除非启用 alloc),并且 thread_rngrandom 不可用。

可移植性和平台支持

许多(但并非所有)算法旨在具有可重复的输出。更多内容请参阅书籍:可移植性

Rand 库支持多种 CPU 架构。平台集成外包给 getrandom

WASM 支持

在WASM目标 wasm32-unknown-unknown 上从操作系统获取的熵种子不支持由 randgetrandom 自动生成。如果您愿意手动生成种子,您可以禁用 getrandom 功能,并使用 SeedableRng 特性中的方法。要启用从操作系统获取种子,可以使用不同的目标,如 wasm32-wasi,或者添加对 getrandom 的直接依赖项并使用 js 功能(如果目标支持JavaScript)。请参阅 getrandom#WebAssembly支持

许可证

Rand 根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发。

请参阅 LICENSE-APACHELICENSE-MIT,以及 COPYRIGHT 获取详细信息。

依赖关系

~0.5–1MB
~14K SLoC