# Struct rand::os::OsRng [−] [src]

    pub struct OsRng(_);

A random number generator that retrieves randomness straight from the operating system. Platform sources:

- Unix-like systems (Linux, Android, Mac OSX): read directly from `/dev/urandom`, or from `getrandom(2)` system call if available.
- Windows: calls `CryptGenRandom`, using the default cryptographic service provider with the `PROV_RSA_FULL` type.
- iOS: calls SecRandomCopyBytes as /dev/(u)random is sandboxed.
- PNaCl: calls into the `nacl-irt-random-0.1` IRT interface.

This does not block.

## Methods

### `impl OsRng`

#### `fn new() -> Result<OsRng>`

Create a new `OsRng`.

## Trait Implementations

### `impl Rng for OsRng`

#### `fn next_u32(&mut self) -> u32`

#### `fn next_u64(&mut self) -> u64`

#### `fn fill_bytes(&mut self, v: &mut [u8])`

#### `fn next_f32(&mut self) -> f32`

#### `fn next_f64(&mut self) -> f64`

#### `fn gen<T: Rand>(&mut self) -> T where Self: Sized`

#### `fn gen_iter<'a, T: Rand>(&'a mut self) -> Generator<'a, T, Self> where Self: Sized`

#### `fn gen_range<T: PartialOrd + SampleRange>(&mut self, low: T, high: T) -> T where Self: Sized`

#### `fn gen_weighted_bool(&mut self, n: u32) -> bool where Self: Sized`

#### `fn gen_ascii_chars<'a>(&'a mut self) -> AsciiGenerator<'a, Self> where Self: Sized`

#### `fn choose<'a, T>(&mut self, values: &'a [T]) -> Option<&'a T> where Self: Sized`

#### `fn shuffle<T>(&mut self, values: &mut [T]) where Self: Sized`

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)