Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
R

rand

> 编程语言
Open source

A Rust library for random number generation.

2.1K stars0 likes0 views
WebsiteGitHub

About

A Rust library for random number generation.

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.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rust

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

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