百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rand

> 编程语言
开源

一个用于随机数生成的 Rust 库。

2.1K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一个用于随机数生成的 Rust 库。

Rand

Rand is a set of crates supporting (pseudo-)random generators:

  • Built over a standard RNG trait: rand_core::RngCore
  • With fast implementations of both strong and small generators: rand::rngs, and more RNGs: chacha20, rand_xoshiro, rand_pcg, rand_sfc, rand_seeder, rngs repo
  • rand::rng is an asymptotically-fast, automatically-seeded and reasonably strong generator available on all std targets
  • Direct support for seeding generators from the getrandom crate

With broad support for random value generation and random processes:

  • StandardUniform random value sampling, Uniform-ranged value sampling and more
  • Samplers for a large number of non-uniform random number distributions via our own rand_distr and via the statrs
  • Random processes (mostly choose and shuffle) via rand::seq traits

All with:

  • Portably reproducible output
  • #[no_std] compatibility (partial)
  • Many performance optimisations thanks to contributions from the wide user-base

Rand is not:

  • Small (LoC). Most low-level crates are small, but the higher-level rand and rand_distr each contain a lot of functionality.
  • Simple (implementation). We have a strong focus on correctness, speed and flexibility, but not simplicity. If you prefer a small-and-simple library, there are alternatives including fastrand and oorandom.
  • Primarily a cryptographic library. rand does provide some generators which aim to support unpredictable value generation under certain constraints; see SECURITY.md for details. Users are expected to determine for themselves whether rand's functionality meets their own security requirements.

Documentation:

  • The Rust Rand Book
  • API reference (docs.rs)

Versions

Rand is mature (suitable for general usage, with infrequent breaking releases which minimise breakage) but not yet at 1.0. Current MAJOR.MINOR versions are:

  • Version 0.10 was released in February 2026.

See the CHANGELOG or Upgrade Guide for more details.

Crate Features

Rand is built with these features enabled by default:

  • std enables functionality dependent on the std lib
  • alloc (implied by std) enables functionality requiring an allocator; a significant portion of sequence and distribution functionality requires this
  • sys_rng enables rand::rngs::SysRng (uses the getrandom crate)
  • std_rng enables rand::rngs::StdRng (uses the chacha20 crate)
  • thread_rng (implies std, std_rng, sys_rng) enables rand::rngs::ThreadRng and rand::rng()

Optionally, the following dependencies can be enabled:

  • chacha enables rand::rngs::{ChaCha8Rng, ChaCha12Rng, ChaCha20Rng} (uses the chacha20 crate)

Additionally, these features configure Rand:

  • simd_support (experimental) enables sampling of SIMD values (uniformly random SIMD integers and floats). Since std::simd is not yet stable this feature requires nightly Rust and may cause build failures.

  • unbiased use unbiased sampling for algorithms supporting this option: Uniform distribution.

    (By default, bias affecting no more than one in 2^48 samples is accepted.)

    Note: enabling this option is expected to affect reproducibility of results.

Portability

Reproducibility

Achieving reproducible results requires not only deterministic algorithms with fixed inputs but also a commitment to stability of algorithms and some platform-specific considerations. A subset of rand does aim to support reproducibility; read more about this in the book: Portability.

WebAssembly support

The WASI and Emscripten targets are directly supported. The wasm32-unknown-unknown target is not automatically supported. To enable support for this target, refer to the getrandom documentation for WebAssembly. Alternatively, the sys_rng feature may be disabled.

License

Rand is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT, and COPYRIGHT for details.

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rust

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言