# Struct rand::distributions::uniform::UniformInt [−][src]

`pub struct UniformInt<X> { /* fields omitted */ }`

## Expand description

The back-end implementing `UniformSampler`

for integer types.

Unless you are implementing `UniformSampler`

for your own type, this type
should not be used directly, use `Uniform`

instead.

# Implementation notes

For simplicity, we use the same generic struct `UniformInt<X>`

for all
integer types `X`

. This gives us only one field type, `X`

; 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, `zone`

, is a multiple of `range`

; other values must be
rejected (by replacing with a new random sample).

As a special case, we use `range = 0`

to represent the full range of the
result type (i.e. for `new_inclusive($ty::MIN, $ty::MAX)`

).

The optimum `zone`

is the largest product of `range`

which fits in our
(unsigned) target type. We calculate this by calculating how many numbers we
must reject: `reject = (MAX + 1) % range = (MAX - range + 1) % range`

. Any (large)
product of `range`

will suffice, thus in `sample_single`

we multiply by a
power of 2 via bit-shifting (faster but may cause more rejections).

The smallest integer PRNGs generate is `u32`

. For 8- and 16-bit outputs we
use `u32`

for our `zone`

and samples (because it’s not slower and because
it reduces the chance of having to reject a sample). In this case we cannot
store `zone`

in the target type since it is too large, however we know
`ints_to_reject < range <= $unsigned::MAX`

.

An alternative to using a modulus is widening multiply: After a widening
multiply by `range`

, the result is in the high word. Then comparing the low
word against `zone`

makes sure our distribution is uniform.

## Trait Implementations

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

## Auto Trait Implementations

### impl<X> RefUnwindSafe for UniformInt<X> where

X: RefUnwindSafe,

### impl<X> Send for UniformInt<X> where

X: Send,

### impl<X> Sync for UniformInt<X> where

X: Sync,

### impl<X> Unpin for UniformInt<X> where

X: Unpin,

### impl<X> UnwindSafe for UniformInt<X> where

X: UnwindSafe,

## Blanket Implementations

Mutably borrows from an owned value. Read more