0.2.2 - This version has known vulnerabilities
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
Apache-2.0 - Apache License 2.0Rand is a set of crates supporting (pseudo-)random generators:
rand_core::RngCore
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 targetsWith broad support for random value generation and random processes:
StandardUniform random value sampling,
Uniform-ranged value sampling
and more
rand_distr and via
the statrs
rand::seq traitsAll with:
#[no_std] compatibility (partial)Rand is not:
rand
and rand_distr each contain a lot of functionality.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:
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:
See the CHANGELOG or Upgrade Guide for more details.
Rand is built with these features enabled by default:
std enables functionality dependent on the std liballoc (implied by std) enables functionality requiring an allocator; a
significant portion of sequence and distribution functionality requires thissys_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)log enables logging (uses the log 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.
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.
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.
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.