pub struct Rng(pub(crate) u64);Expand description
A random number generator.
Tuple Fields§
§0: u64Implementations§
Source§impl Rng
impl Rng
Sourcepub(crate) fn gen_mod_u32(&mut self, n: u32) -> u32
pub(crate) fn gen_mod_u32(&mut self, n: u32) -> u32
Generates a random u32 in 0..n.
Sourcepub(crate) fn gen_mod_u64(&mut self, n: u64) -> u64
pub(crate) fn gen_mod_u64(&mut self, n: u64) -> u64
Generates a random u64 in 0..n.
Sourcepub(crate) fn gen_mod_u128(&mut self, n: u128) -> u128
pub(crate) fn gen_mod_u128(&mut self, n: u128) -> u128
Generates a random u128 in 0..n.
Source§impl Rng
impl Rng
Sourcepub fn with_seed(seed: u64) -> Self
pub fn with_seed(seed: u64) -> Self
Creates a new random number generator with the initial seed.
Sourcepub fn fork(&mut self) -> Self
pub fn fork(&mut self) -> Self
Clones the generator by deterministically deriving a new generator based on the initial seed.
This function can be used to create a new generator that is a “spinoff” of the old generator. The new generator will not produce the same sequence of values as the old generator.
§Example
// Seed two generators equally, and clone both of them.
let mut base1 = fastrand::Rng::with_seed(0x4d595df4d0f33173);
base1.bool(); // Use the generator once.
let mut base2 = fastrand::Rng::with_seed(0x4d595df4d0f33173);
base2.bool(); // Use the generator once.
let mut rng1 = base1.fork();
let mut rng2 = base2.fork();
println!("rng1 returns {}", rng1.u32(..));
println!("rng2 returns {}", rng2.u32(..));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 chars in ranges 0-9 and a-z.
Panics if the base is zero or greater than 36.
Sourcepub fn choose_multiple<I: IntoIterator>(
&mut self,
source: I,
amount: usize,
) -> Vec<I::Item>
pub fn choose_multiple<I: IntoIterator>( &mut self, source: I, amount: usize, ) -> Vec<I::Item>
Collects amount values at random from the iterable into a vector.
The length of the returned vector equals amount unless the iterable
contains insufficient elements, in which case it equals the number of
elements available.
Complexity is O(n) where n is the length of the iterable.
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::Item>
pub fn choice<I>(&mut self, iter: I) -> Option<I::Item>
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().