# [−][src]Struct rand::rngs::StdRng

The standard RNG. The PRNG algorithm in `StdRng`

is chosen to be efficient
on the current platform, to be statistically strong and unpredictable
(meaning a cryptographically secure PRNG).

The current algorithm used is the ChaCha block cipher with either 20 or 12
rounds (see the `stdrng_*`

feature flags, documented in the README).
This may change as new evidence of cipher security and performance
becomes available.

The algorithm is deterministic but should not be considered reproducible due to dependence on configuration and possible replacement in future library versions. For a secure reproducible generator, we recommend use of the rand_chacha crate directly.

## Trait Implementations

`impl Clone for StdRng`

[src]

`fn clone(&self) -> StdRng`

[src]

`fn clone_from(&mut self, source: &Self)`

1.0.0[src]

Performs copy-assignment from `source`

. Read more

`impl Debug for StdRng`

[src]

`impl RngCore for StdRng`

[src]

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

[src]

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

[src]

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

[src]

`fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>`

[src]

`impl SeedableRng for StdRng`

[src]

`type Seed = <Rng as SeedableRng>::Seed`

Seed type, which is restricted to types mutably-dereferencable as `u8`

arrays (we recommend `[u8; N]`

for some `N`

). Read more

`fn from_seed(seed: Self::Seed) -> Self`

[src]

`fn from_rng<R: RngCore>(rng: R) -> Result<Self, Error>`

[src]

`fn seed_from_u64(state: u64) -> Self`

[src]

Create a new PRNG using a `u64`

seed. Read more

`fn from_entropy() -> Self`

[src]

Creates a new instance of the RNG seeded via [`getrandom`

]. Read more

`impl CryptoRng for StdRng`

[src]

## Auto Trait Implementations

`impl Send for StdRng`

`impl Unpin for StdRng`

`impl Sync for StdRng`

`impl UnwindSafe for StdRng`

`impl RefUnwindSafe for StdRng`

## Blanket Implementations

`impl<R> Rng for R where`

R: RngCore + ?Sized,

[src]

R: RngCore + ?Sized,

`fn gen<T>(&mut self) -> T where`

Standard: Distribution<T>,

[src]

Standard: Distribution<T>,

Return a random value supporting the [`Standard`

] distribution. Read more

`fn gen_range<T: SampleUniform, B1, B2>(&mut self, low: B1, high: B2) -> T where`

B1: SampleBorrow<T> + Sized,

B2: SampleBorrow<T> + Sized,

[src]

B1: SampleBorrow<T> + Sized,

B2: SampleBorrow<T> + Sized,

Generate a random value in the range [`low`

, `high`

), i.e. inclusive of `low`

and exclusive of `high`

. Read more

`fn sample<T, D: Distribution<T>>(&mut self, distr: D) -> T`

[src]

Sample a new value, using the given distribution. Read more

#### ⓘImportant traits for DistIter<D, R, T>`fn sample_iter<T, D>(self, distr: D) -> DistIter<D, Self, T> where`

D: Distribution<T>,

Self: Sized,

[src]

D: Distribution<T>,

Self: Sized,

Create an iterator that generates values using the given distribution. Read more

`fn fill<T: AsByteSliceMut + ?Sized>(&mut self, dest: &mut T)`

[src]

Fill `dest`

entirely with random bytes (uniform value distribution), where `dest`

is any type supporting `AsByteSliceMut`

, namely slices and arrays over primitive integer types (`i8`

, `i16`

, `u32`

, etc.). Read more

`fn try_fill<T: AsByteSliceMut + ?Sized>(`

&mut self,

dest: &mut T

) -> Result<(), Error>

[src]

&mut self,

dest: &mut T

) -> Result<(), Error>

Fill `dest`

entirely with random bytes (uniform value distribution), where `dest`

is any type supporting `AsByteSliceMut`

, namely slices and arrays over primitive integer types (`i8`

, `i16`

, `u32`

, etc.). Read more

`fn gen_bool(&mut self, p: f64) -> bool`

[src]

Return a bool with a probability `p`

of being true. Read more

`fn gen_ratio(&mut self, numerator: u32, denominator: u32) -> bool`

[src]

Return a bool with a probability of `numerator/denominator`

of being true. I.e. `gen_ratio(2, 3)`

has chance of 2 in 3, or about 67%, of returning true. If `numerator == denominator`

, then the returned value is guaranteed to be `true`

. If `numerator == 0`

, then the returned value is guaranteed to be `false`

. Read more

`impl<T> ToOwned for T where`

T: Clone,

[src]

T: Clone,

`type Owned = T`

The resulting type after obtaining ownership.

`fn to_owned(&self) -> T`

[src]

`fn clone_into(&self, target: &mut T)`

[src]

`impl<T, U> Into<U> for T where`

U: From<T>,

[src]

U: From<T>,

`impl<T> From<T> for T`

[src]

`impl<T, U> TryFrom<U> for T where`

U: Into<T>,

[src]

U: Into<T>,

`type Error = Infallible`

The type returned in the event of a conversion error.

`fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`

[src]

`impl<T, U> TryInto<U> for T where`

U: TryFrom<T>,

[src]

U: TryFrom<T>,

`type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.

`fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`

[src]

`impl<T> BorrowMut<T> for T where`

T: ?Sized,

[src]

T: ?Sized,

`fn borrow_mut(&mut self) -> &mut T`

[src]

`impl<T> Borrow<T> for T where`

T: ?Sized,

[src]

T: ?Sized,

`impl<T> Any for T where`

T: 'static + ?Sized,

[src]

T: 'static + ?Sized,

`impl<T> FromCast<T> for T`

`fn from_cast(t: T) -> T`

`impl<T, U> Cast<U> for T where`

U: FromCast<T>,

U: FromCast<T>,

`fn cast(self) -> U`

`impl<T, U> IntoBits<U> for T where`

U: FromBits<T>,

U: FromBits<T>,

`fn into_bits(self) -> U`

`impl<T> FromBits<T> for T`

`fn from_bits(t: T) -> T`

`impl<V, T> VZip<V> for T where`

V: MultiLane<T>,

V: MultiLane<T>,