Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork476
A Rust library for random number generation.
License
Apache-2.0, MIT licenses found
Licenses found
rust-random/rand
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Rand is a set of crates supporting (pseudo-)random generators:
- Built over a standard RNG trait:
rand_core::RngCore
- With fast implementations of bothstrong andsmall generators:
rand::rngs
, and more RNGs:rand_chacha
,rand_xoshiro
,rand_pcg
,rngs repo rand::rng
is an asymptotically-fast, automatically-seeded and reasonably strong generator available on allstd
targets- Direct support for seeding generators from thegetrandom crate
With broad support for random value generation and random processes:
StandardUniform
random value sampling,Uniform
-ranged value samplingandmore- Samplers for a large number of non-uniform random number distributions via our own
rand_distr
and viathestatrs
- 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 wideuser-base
Randis not:
- Small (LoC). Most low-level crates are small, but the higher-level
rand
andrand_distr
each contain a lot of functionality. - Simple (implementation). We have a strong focus on correctness, speed and flexibility, butnot simplicity. If you prefer a small-and-simple library, there arealternatives includingfastrandandoorandom.
- Primarily a cryptographic library.
rand
does provide some generators whichaim to support unpredictable value generation under certain constraints;seeSECURITY.md for details.Users are expected to determine for themselveswhetherrand
's functionality meets their own security requirements.
Documentation:
Rand ismature (suitable for general usage, with infrequent breaking releaseswhich minimise breakage) but not yet at 1.0. CurrentMAJOR.MINOR
versions are:
- Version 0.9 was released in January 2025.
See theCHANGELOG orUpgrade Guide for more details.
Rand is built with these features enabled by default:
std
enables functionality dependent on thestd
liballoc
(implied bystd
) enables functionality requiring an allocatoros_rng
(implied bystd
) enablesrngs::OsRng
, using thegetrandom cratestd_rng
enables inclusion ofStdRng
,ThreadRng
small_rng
enables inclusion of theSmallRng
PRNG
Optionally, the following dependencies can be enabled:
log
enables logging vialog
Additionally, these features configure Rand:
nightly
includes some additions requiring nightly Rustsimd_support
(experimental) enables sampling of SIMD values(uniformly random SIMD integers and floats), requiring nightly Rustunbiased
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.
Note that nightly features are not stable and therefore not all library andcompiler versions will be compatible. This is especially true of Rand'sexperimentalsimd_support
feature.
Rand supports limited functionality inno_std
mode (enabled viadefault-features = false
). In this case,OsRng
andfrom_os_rng
areunavailable (unlessos_rng
is enabled), large parts ofseq
areunavailable (unlessalloc
is enabled), andThreadRng
is unavailable.
Many (but not all) algorithms are intended to have reproducible output. Read more in the book:Portability.
The Rand library supports a variety of CPU architectures. Platform integration is outsourced togetrandom.
TheWASI and Emscriptentargets are directly supported. Thewasm32-unknown-unknown
target is notautomatically supported. To enable support for this target, refer to thegetrandom
documentation for WebAssembly.Alternatively, theos_rng
feature may be disabled.
Rand is distributed under the terms of both the MIT license and theApache License (Version 2.0).
SeeLICENSE-APACHE andLICENSE-MIT, andCOPYRIGHT for details.
About
A Rust library for random number generation.
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.