Skip to content

nvzqz/rand

This branch is 29848 commits ahead of, 3340 commits behind rust-random/rand:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7f84572 · Dec 4, 2017
Dec 2, 2016
Aug 23, 2017
Dec 4, 2017
Feb 6, 2015
Jun 14, 2017
Nov 16, 2017
Feb 3, 2015
Feb 3, 2015
Oct 5, 2017
Jul 19, 2017

Repository files navigation

rand

A Rust library for random number generators and other randomness functionality.

Build Status Build status

Documentation

Usage

Add this to your Cargo.toml:

[dependencies]
rand = "0.3"

and this to your crate root:

extern crate rand;

Examples

There is built-in support for a random number generator (RNG) associated with each thread stored in thread-local storage. This RNG can be accessed via thread_rng, or used implicitly via random. This RNG is normally randomly seeded from an operating-system source of randomness, e.g. /dev/urandom on Unix systems, and will automatically reseed itself from this source after generating 32 KiB of random data.

let tuple = rand::random::<(f64, char)>();
println!("{:?}", tuple)
use rand::Rng;

let mut rng = rand::thread_rng();
if rng.gen() { // random bool
    println!("i32: {}, u32: {}", rng.gen::<i32>(), rng.gen::<u32>())
}

It is also possible to use other RNG types, which have a similar interface. The following uses the "ChaCha" algorithm instead of the default.

use rand::{Rng, ChaChaRng};

let mut rng = rand::ChaChaRng::new_unseeded();
println!("i32: {}, u32: {}", rng.gen::<i32>(), rng.gen::<u32>())

derive(Rand)

You can derive the Rand trait for your custom type via the #[derive(Rand)] directive. To use this first add this to your Cargo.toml:

rand = "0.3"
rand_derive = "0.3"

Next in your crate:

extern crate rand;
#[macro_use]
extern crate rand_derive;

#[derive(Rand, Debug)]
struct MyStruct {
    a: i32,
    b: u32,
}

fn main() {
    println!("{:?}", rand::random::<MyStruct>());
}

License

rand is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE, and LICENSE-MIT for details.

About

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%