#random

no-std rand

Random number generators and other randomness functionality

87 releases

Uses new Rust 2024

0.10.1 Apr 11, 2026
0.10.0 Feb 8, 2026
0.10.0-rc.8 Jan 26, 2026
0.10.0-rc.5 Nov 8, 2025
0.3.4 Mar 31, 2015

#1 in #random

Download history 3266623/week @ 2026-03-03 20395575/week @ 2026-03-10 18972242/week @ 2026-03-17 18012381/week @ 2026-03-24 18147563/week @ 2026-03-31 20010959/week @ 2026-04-07 21085720/week @ 2026-04-14 22434098/week @ 2026-04-21 23265214/week @ 2026-04-28 25142324/week @ 2026-05-05 27742962/week @ 2026-05-12 26524813/week @ 2026-05-19 27136248/week @ 2026-05-26 24281664/week @ 2026-06-02

109,941,840 downloads per month
Used in 82,412 crates (29,374 directly)

MIT/Apache

360KB
6K SLoC

Rand

Test Status Crate Book API

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

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:

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.

Dependencies

~0–1.4MB
~26K SLoC