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

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

## Expand description

The back-end implementing `UniformSampler`

for floating-point types.

Unless you are implementing `UniformSampler`

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

instead.

# Implementation notes

Instead of generating a float in the `[0, 1)`

range using `Standard`

, the
`UniformFloat`

implementation converts the output of an PRNG itself. This
way one or two steps can be optimized out.

The floats are first converted to a value in the `[1, 2)`

interval using a
transmute-based method, and then mapped to the expected range with a
multiply and addition. Values produced this way have what equals 23 bits of
random digits for an `f32`

, and 52 for an `f64`

.

## 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: B1,

high: 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: B1,

high: 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: B1,

high: 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: B1,

high: 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

## Auto Trait Implementations

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

X: RefUnwindSafe,

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

X: Send,

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

X: Sync,

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

X: Unpin,

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

X: UnwindSafe,

## Blanket Implementations

Mutably borrows from an owned value. Read more