# Struct rand::distributions::uniform::UniformFloat

source · `pub struct UniformFloat<X> { /* private fields */ }`

## 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§

source§### impl<X: Clone> Clone for UniformFloat<X>

### impl<X: Clone> Clone for UniformFloat<X>

source§#### fn clone(&self) -> UniformFloat<X>

#### fn clone(&self) -> UniformFloat<X>

Returns a copy of the value. Read more

1.0.0 · source§#### fn clone_from(&mut self, source: &Self)

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from

`source`

. Read moresource§### impl<X: Debug> Debug for UniformFloat<X>

### impl<X: Debug> Debug for UniformFloat<X>

source§### impl<'de, X> Deserialize<'de> for UniformFloat<X>where
X: Deserialize<'de>,

### impl<'de, X> Deserialize<'de> for UniformFloat<X>where X: Deserialize<'de>,

source§#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,

#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

source§### impl<X: PartialEq> PartialEq<UniformFloat<X>> for UniformFloat<X>

### impl<X: PartialEq> PartialEq<UniformFloat<X>> for UniformFloat<X>

source§#### fn eq(&self, other: &UniformFloat<X>) -> bool

#### fn eq(&self, other: &UniformFloat<X>) -> bool

This method tests for

`self`

and `other`

values to be equal, and is used
by `==`

.source§### impl<X> Serialize for UniformFloat<X>where
X: Serialize,

### impl<X> Serialize for UniformFloat<X>where X: Serialize,

source§### impl UniformSampler for UniformFloat<f32>

### impl UniformSampler for UniformFloat<f32>

source§#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where
B1: SampleBorrow<Self::X> + Sized,
B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where B1: SampleBorrow<Self::X> + Sized, B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound

`[low, high)`

. Read moresource§#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where
B1: SampleBorrow<Self::X> + Sized,
B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where B1: SampleBorrow<Self::X> + Sized, B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds

`[low, high]`

. Read moresource§#### fn sample_single<R: Rng + ?Sized, B1, B2>(
low_b: B1,
high_b: B2,
rng: &mut R
) -> Result<Self::X, Error>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 ) -> Result<Self::X, Error>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 moresource§#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(
low_b: B1,
high_b: B2,
rng: &mut R
) -> Result<Self::X, Error>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 ) -> Result<Self::X, Error>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 moresource§### impl UniformSampler for UniformFloat<f64>

### impl UniformSampler for UniformFloat<f64>

source§#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where
B1: SampleBorrow<Self::X> + Sized,
B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where B1: SampleBorrow<Self::X> + Sized, B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound

`[low, high)`

. Read moresource§#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where
B1: SampleBorrow<Self::X> + Sized,
B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Result<Self, Error>where B1: SampleBorrow<Self::X> + Sized, B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds

`[low, high]`

. Read moresource§#### fn sample_single<R: Rng + ?Sized, B1, B2>(
low_b: B1,
high_b: B2,
rng: &mut R
) -> Result<Self::X, Error>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 ) -> Result<Self::X, Error>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 moresource§#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(
low_b: B1,
high_b: B2,
rng: &mut R
) -> Result<Self::X, Error>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 ) -> Result<Self::X, Error>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### impl<X: Copy> Copy for UniformFloat<X>

### impl<X> StructuralPartialEq for UniformFloat<X>

## 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§

source§### impl<T> BorrowMut<T> for Twhere
T: ?Sized,

### impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§#### fn borrow_mut(&mut self) -> &mut T

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more