Expand description
Utilities for random number generation
Rand provides utilities to generate random numbers, to convert them to useful types and distributions, and some randomness-related algorithms.
Quick Start
To get you started quickly, the easiest and highest-level way to get
a random value is to use random()
; alternatively you can use
thread_rng()
. The Rng
trait provides a useful API on all RNGs, while
the distributions
and seq
modules provide further
functionality on top of RNGs.
use rand::prelude::*;
if rand::random() { // generates a boolean
// Try printing a random unicode code point (probably a bad idea)!
println!("char: {}", rand::random::<char>());
}
let mut rng = rand::thread_rng();
let y: f64 = rng.gen(); // generates a float between 0 and 1
let mut nums: Vec<i32> = (1..100).collect();
nums.shuffle(&mut rng);
The Book
For the user guide and futher documentation, please read The Rust Rand Book.
Modules
Generating random samples from probability distributions.
Convenience re-export of common members
Pseudo-random number generators.
Random number generators and adapters for common usage:
Functions for randomly accessing and sampling sequences.
Structs
Error type of random number generators
Enums
Error kind which can be matched over.
Traits
Trait for casting types to byte slices
A marker trait used to indicate that an RngCore
or BlockRngCore
implementation is supposed to be cryptographically secure.
A convenience extension to SeedableRng
allowing construction from fresh
entropy. This trait is automatically implemented for any PRNG implementing
SeedableRng
and is not intended to be implemented by users.
An automatically-implemented extension trait on RngCore
providing high-level
generic methods for sampling values and other convenience methods.
The core of a random number generator.
A random number generator that can be explicitly seeded.
Functions
Generates a random value using the thread-local random number generator.
Retrieve the lazily-initialized thread-local random number generator,
seeded by the system. Intended to be used in method chaining style,
e.g. thread_rng().gen::<i32>()
, or cached locally, e.g.
let mut rng = thread_rng();
. Invoked by the Default
trait, making
ThreadRng::default()
equivelent.