Struct urandom::distributions::UniformInt
source · pub struct UniformInt<T> { /* private fields */ }
Expand description
Uniform distribution over integral types.
Implementation notes
For simplicity, we use the same generic struct UniformInt<T>
for all integer types T
.
This gives us only one field type, T
; to store unsigned values of this size, we take use the fact that these conversions are no-ops.
For a closed range, the number of possible numbers we should generate is range = (high - low + 1)
.
To avoid bias, we must ensure that the size of our sample space, is a multiple of range
;
other values must be rejected (by replacing with a new random sample).
See Fast Random Integer Generation in an Interval for the algorithm used.
As a special case, we use range = 0
to represent the full range of the result type (i.e. for the full inclusive range).
For more information on this bias see the examples/int_bias.rs
example.
Trait Implementations
sourceimpl<T: Clone> Clone for UniformInt<T>
impl<T: Clone> Clone for UniformInt<T>
sourcefn clone(&self) -> UniformInt<T>
fn clone(&self) -> UniformInt<T>
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl<T: Debug> Debug for UniformInt<T>
impl<T: Debug> Debug for UniformInt<T>
sourceimpl Distribution<i16> for UniformInt<i16>
impl Distribution<i16> for UniformInt<i16>
sourceimpl Distribution<i32> for UniformInt<i32>
impl Distribution<i32> for UniformInt<i32>
sourceimpl Distribution<i64> for UniformInt<i64>
impl Distribution<i64> for UniformInt<i64>
sourceimpl Distribution<i8> for UniformInt<i8>
impl Distribution<i8> for UniformInt<i8>
sourceimpl Distribution<isize> for UniformInt<isize>
impl Distribution<isize> for UniformInt<isize>
sourceimpl Distribution<u16> for UniformInt<u16>
impl Distribution<u16> for UniformInt<u16>
sourceimpl Distribution<u32> for UniformInt<u32>
impl Distribution<u32> for UniformInt<u32>
sourceimpl Distribution<u64> for UniformInt<u64>
impl Distribution<u64> for UniformInt<u64>
sourceimpl Distribution<u8> for UniformInt<u8>
impl Distribution<u8> for UniformInt<u8>
sourceimpl Distribution<usize> for UniformInt<usize>
impl Distribution<usize> for UniformInt<usize>
sourceimpl UniformSampler<i16> for UniformInt<i16>
impl UniformSampler<i16> for UniformInt<i16>
sourcefn new(low: i16, high: i16) -> UniformInt<i16>
fn new(low: i16, high: i16) -> UniformInt<i16>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: i16, high: i16) -> UniformInt<i16>
fn new_inclusive(low: i16, high: i16) -> UniformInt<i16>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<i32> for UniformInt<i32>
impl UniformSampler<i32> for UniformInt<i32>
sourcefn new(low: i32, high: i32) -> UniformInt<i32>
fn new(low: i32, high: i32) -> UniformInt<i32>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: i32, high: i32) -> UniformInt<i32>
fn new_inclusive(low: i32, high: i32) -> UniformInt<i32>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<i64> for UniformInt<i64>
impl UniformSampler<i64> for UniformInt<i64>
sourcefn new(low: i64, high: i64) -> UniformInt<i64>
fn new(low: i64, high: i64) -> UniformInt<i64>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: i64, high: i64) -> UniformInt<i64>
fn new_inclusive(low: i64, high: i64) -> UniformInt<i64>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<i8> for UniformInt<i8>
impl UniformSampler<i8> for UniformInt<i8>
sourcefn new(low: i8, high: i8) -> UniformInt<i8>
fn new(low: i8, high: i8) -> UniformInt<i8>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: i8, high: i8) -> UniformInt<i8>
fn new_inclusive(low: i8, high: i8) -> UniformInt<i8>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<isize> for UniformInt<isize>
impl UniformSampler<isize> for UniformInt<isize>
sourcefn new(low: isize, high: isize) -> UniformInt<isize>
fn new(low: isize, high: isize) -> UniformInt<isize>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: isize, high: isize) -> UniformInt<isize>
fn new_inclusive(low: isize, high: isize) -> UniformInt<isize>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<u16> for UniformInt<u16>
impl UniformSampler<u16> for UniformInt<u16>
sourcefn new(low: u16, high: u16) -> UniformInt<u16>
fn new(low: u16, high: u16) -> UniformInt<u16>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: u16, high: u16) -> UniformInt<u16>
fn new_inclusive(low: u16, high: u16) -> UniformInt<u16>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<u32> for UniformInt<u32>
impl UniformSampler<u32> for UniformInt<u32>
sourcefn new(low: u32, high: u32) -> UniformInt<u32>
fn new(low: u32, high: u32) -> UniformInt<u32>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: u32, high: u32) -> UniformInt<u32>
fn new_inclusive(low: u32, high: u32) -> UniformInt<u32>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<u64> for UniformInt<u64>
impl UniformSampler<u64> for UniformInt<u64>
sourcefn new(low: u64, high: u64) -> UniformInt<u64>
fn new(low: u64, high: u64) -> UniformInt<u64>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: u64, high: u64) -> UniformInt<u64>
fn new_inclusive(low: u64, high: u64) -> UniformInt<u64>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<u8> for UniformInt<u8>
impl UniformSampler<u8> for UniformInt<u8>
sourcefn new(low: u8, high: u8) -> UniformInt<u8>
fn new(low: u8, high: u8) -> UniformInt<u8>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: u8, high: u8) -> UniformInt<u8>
fn new_inclusive(low: u8, high: u8) -> UniformInt<u8>
[low, high]
(inclusive).
May panic if low > high
. Read moresourceimpl UniformSampler<usize> for UniformInt<usize>
impl UniformSampler<usize> for UniformInt<usize>
sourcefn new(low: usize, high: usize) -> UniformInt<usize>
fn new(low: usize, high: usize) -> UniformInt<usize>
[low, high)
(excluding high).
May panic if low >= high
. Read moresourcefn new_inclusive(low: usize, high: usize) -> UniformInt<usize>
fn new_inclusive(low: usize, high: usize) -> UniformInt<usize>
[low, high]
(inclusive).
May panic if low > high
. Read more