rust-lang-nursery/rand

Name: rand

Owner: rust-lang-nursery

Description: null

Created: 2015-02-03 05:59:32.0

Updated: 2018-01-17 13:46:57.0

Pushed: 2018-01-18 18:45:25.0

Homepage: https://docs.rs/rand

Size: 84342

Language: Rust

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

rand

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

Build Status Build status

Documentation

Usage

Add this to your Cargo.toml:

endencies]
 = "0.4"

and this to your crate root:

rn crate rand;
Versions

Version 0.4was released in December 2017. It contains almost no breaking changes since the 0.3 series, but nevertheless contains some significant new code, including a new “external” entropy source (JitterRng) and no_std support.

Version 0.5 is in development and will contain significant breaking changes.

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.

tuple = rand::random::<(f64, char)>();
tln!("{:?}", tuple)
ust
rand::Rng;

mut rng = rand::thread_rng();
ng.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.

rand::{Rng, ChaChaRng};

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

By default, rand is built with all stable features available. The following optional features are available:

Testing

Unfortunately, cargo test does not test everything. The following tests are recommended:

sic tests for rand and sub-crates
o test --all

st no_std support (build only since nearly all tests require std)
o build --all --no-default-features

st 128-bit support (requires nightly)
o test --all --features nightly

nchmarks (requires nightly)
o bench
 just to test the benchmark code:
o test --benches

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:

 = "0.4"
_derive = "0.3"

Next in your crate:

rn crate rand;
cro_use]
rn crate rand_derive;

rive(Rand, Debug)]
ct MyStruct {
a: i32,
b: u32,


ain() {
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.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.