Struct fastrand_contrib::Rng
source · pub struct Rng(/* private fields */);
Expand description
A random number generator.
Implementations§
source§impl Rng
impl Rng
sourcepub fn with_seed(seed: u64) -> Rng
pub fn with_seed(seed: u64) -> Rng
Creates a new random number generator with the initial seed.
sourcepub fn fork(&mut self) -> Rng
pub fn fork(&mut self) -> Rng
Clones the generator by deterministically deriving a new generator based on the initial seed.
Example
// Seed two generators equally, and clone both of them.
let mut base1 = fastrand::Rng::new();
base1.seed(0x4d595df4d0f33173);
base1.bool(); // Use the generator once.
let mut base2 = fastrand::Rng::new();
base2.seed(0x4d595df4d0f33173);
base2.bool(); // Use the generator once.
let mut rng1 = base1.clone();
let mut rng2 = base2.clone();
assert_eq!(rng1.u64(..), rng2.u64(..), "the cloned generators are identical");
sourcepub fn alphabetic(&mut self) -> char
pub fn alphabetic(&mut self) -> char
Generates a random char
in ranges a-z and A-Z.
sourcepub fn alphanumeric(&mut self) -> char
pub fn alphanumeric(&mut self) -> char
Generates a random char
in ranges a-z, A-Z and 0-9.
sourcepub fn digit(&mut self, base: u32) -> char
pub fn digit(&mut self, base: u32) -> char
Generates a random digit in the given base
.
Digits are represented by char
s in ranges 0-9 and a-z.
Panics if the base is zero or greater than 36.
sourcepub fn choose_multiple<T>(
&mut self,
source: T,
amount: usize
) -> Vec<<T as Iterator>::Item, Global>where
T: Iterator,
pub fn choose_multiple<T>( &mut self, source: T, amount: usize ) -> Vec<<T as Iterator>::Item, Global>where T: Iterator,
Collects amount
values at random from the iterator into a vector.
The length of the returned vector equals amount
unless the iterator
contains insufficient elements, in which case it equals the number of
elements available.
Complexity is O(n)
where n
is the length of the iterator.
sourcepub fn i8(&mut self, range: impl RangeBounds<i8>) -> i8
pub fn i8(&mut self, range: impl RangeBounds<i8>) -> i8
Generates a random i8
in the given range.
Panics if the range is empty.
sourcepub fn i16(&mut self, range: impl RangeBounds<i16>) -> i16
pub fn i16(&mut self, range: impl RangeBounds<i16>) -> i16
Generates a random i16
in the given range.
Panics if the range is empty.
sourcepub fn i32(&mut self, range: impl RangeBounds<i32>) -> i32
pub fn i32(&mut self, range: impl RangeBounds<i32>) -> i32
Generates a random i32
in the given range.
Panics if the range is empty.
sourcepub fn i64(&mut self, range: impl RangeBounds<i64>) -> i64
pub fn i64(&mut self, range: impl RangeBounds<i64>) -> i64
Generates a random i64
in the given range.
Panics if the range is empty.
sourcepub fn i128(&mut self, range: impl RangeBounds<i128>) -> i128
pub fn i128(&mut self, range: impl RangeBounds<i128>) -> i128
Generates a random i128
in the given range.
Panics if the range is empty.
sourcepub fn isize(&mut self, range: impl RangeBounds<isize>) -> isize
pub fn isize(&mut self, range: impl RangeBounds<isize>) -> isize
Generates a random isize
in the given range.
Panics if the range is empty.
sourcepub fn choice<I>(&mut self, iter: I) -> Option<<I as IntoIterator>::Item>where
I: IntoIterator,
<I as IntoIterator>::IntoIter: ExactSizeIterator,
pub fn choice<I>(&mut self, iter: I) -> Option<<I as IntoIterator>::Item>where I: IntoIterator, <I as IntoIterator>::IntoIter: ExactSizeIterator,
Choose an item from an iterator at random.
This function may have an unexpected result if the len()
property of the
iterator does not match the actual number of items in the iterator. If
the iterator is empty, this returns None
.
sourcepub fn u8(&mut self, range: impl RangeBounds<u8>) -> u8
pub fn u8(&mut self, range: impl RangeBounds<u8>) -> u8
Generates a random u8
in the given range.
Panics if the range is empty.
sourcepub fn u16(&mut self, range: impl RangeBounds<u16>) -> u16
pub fn u16(&mut self, range: impl RangeBounds<u16>) -> u16
Generates a random u16
in the given range.
Panics if the range is empty.
sourcepub fn u32(&mut self, range: impl RangeBounds<u32>) -> u32
pub fn u32(&mut self, range: impl RangeBounds<u32>) -> u32
Generates a random u32
in the given range.
Panics if the range is empty.
sourcepub fn u64(&mut self, range: impl RangeBounds<u64>) -> u64
pub fn u64(&mut self, range: impl RangeBounds<u64>) -> u64
Generates a random u64
in the given range.
Panics if the range is empty.
sourcepub fn u128(&mut self, range: impl RangeBounds<u128>) -> u128
pub fn u128(&mut self, range: impl RangeBounds<u128>) -> u128
Generates a random u128
in the given range.
Panics if the range is empty.
sourcepub fn usize(&mut self, range: impl RangeBounds<usize>) -> usize
pub fn usize(&mut self, range: impl RangeBounds<usize>) -> usize
Generates a random usize
in the given range.
Panics if the range is empty.
sourcepub fn char(&mut self, range: impl RangeBounds<char>) -> char
pub fn char(&mut self, range: impl RangeBounds<char>) -> char
Generates a random char
in the given range.
Panics if the range is empty.
Trait Implementations§
source§impl Default for Rng
impl Default for Rng
source§fn default() -> Rng
fn default() -> Rng
Initialize the Rng
from the system’s random number generator.
This is equivalent to Rng::new()
.
source§impl RngExt for Rng
impl RngExt for Rng
source§fn f32_range(&mut self, range: impl RangeBounds<f32>) -> f32
fn f32_range(&mut self, range: impl RangeBounds<f32>) -> f32
Generate a 32-bit floating point number in the specified range.
source§fn f64_range(&mut self, range: impl RangeBounds<f64>) -> f64
fn f64_range(&mut self, range: impl RangeBounds<f64>) -> f64
Generate a 64-bit floating point number in the specified range.
source§fn f32_normal(&mut self, mu: f32, sigma: f32) -> f32
fn f32_normal(&mut self, mu: f32, sigma: f32) -> f32
Generate a 32-bit floating point number in the normal distribution with mean mu and standard deviation sigma.
source§fn f64_normal(&mut self, mu: f64, sigma: f64) -> f64
fn f64_normal(&mut self, mu: f64, sigma: f64) -> f64
Generate a 64-bit floating point number in the normal distribution with mean mu and standard deviation sigma.