# rand - Rust
Utilities for random number generation
Keywords: rust, rustlang, rust-lang, rand

# Crate rand

source · [−]
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 further documentation, please read The Rust Rand Book.

## Modules

distributions

Generating random samples from probability distributions

prelude

Convenience re-export of common members

rngs

Random number generators and adapters

seq

Sequence-related functionality

## Structs

Error

Error type of random number generators

## Traits

CryptoRng

A marker trait used to indicate that an `RngCore` or `BlockRngCore` implementation is supposed to be cryptographically secure.

Fill

Types which may be filled with random data

Rng

An automatically-implemented extension trait on `RngCore` providing high-level generic methods for sampling values and other convenience methods.

RngCore

The core of a random number generator.

SeedableRng

A random number generator that can be explicitly seeded.

## Functions

random

Generates a random value using the thread-local random number generator.

thread_rng

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()` equivalent.