Struct rand::rngs::ThreadRng [] [src]

pub struct ThreadRng { /* fields omitted */ }

The type returned by thread_rng, essentially just a reference to the PRNG in thread-local memory.

ThreadRng uses ReseedingRng wrapping the same PRNG as StdRng, which is reseeded after generating 32 MiB of random data. A single instance is cached per thread and the returned ThreadRng is a reference to this instance — hence ThreadRng is neither Send nor Sync but is safe to use within a single thread. This RNG is seeded and reseeded via EntropyRng as required.

Note that the reseeding is done as an extra precaution against entropy leaks and is in theory unnecessary — to predict ThreadRng's output, an attacker would have to either determine most of the RNG's seed or internal state, or crack the algorithm used.

Like StdRng, ThreadRng is a cryptographically secure PRNG. The current algorithm used is HC-128, which is an array-based PRNG that trades memory usage for better performance. This makes it similar to ISAAC, the algorithm used in ThreadRng before rand 0.5.

Cloning this handle just produces a new reference to the same thread-local generator.

Trait Implementations

impl Clone for ThreadRng
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Debug for ThreadRng
[src]

[src]

Formats the value using the given formatter. Read more

impl RngCore for ThreadRng
[src]

[src]

Return the next random u32. Read more

[src]

Return the next random u64. Read more

[src]

Fill dest with random data. Read more

[src]

Fill dest entirely with random data. Read more

impl CryptoRng for ThreadRng
[src]

Auto Trait Implementations

impl !Send for ThreadRng

impl !Sync for ThreadRng