Struct OpenClosed01

pub struct OpenClosed01;

A distribution to sample floating point numbers uniformly in the half-open interval (0, 1], i.e. including 1 but not 0.

All values that can be generated are of the form n * ε/2. For f32 the 24 most significant random bits of a u32 are used and for f64 the 53 most significant bits of a u64 are used. The conversion uses the multiplicative method.

See also: StandardUniform which samples from [0, 1), Open01 which samples from (0, 1) and Uniform which samples from arbitrary ranges.

Example

use rand::RngExt;
use rand::distr::OpenClosed01;

let val: f32 = rand::rng().sample(OpenClosed01);
println!("f32 from (0, 1): {}", val);

Trait Implementations

impl Clone for OpenClosed01

fn clone(&self) -> OpenClosed01

impl Copy for OpenClosed01

impl Debug for OpenClosed01

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Default for OpenClosed01

fn default() -> OpenClosed01

impl Distribution<f32> for OpenClosed01

fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> f32

impl Distribution<f64> for OpenClosed01

fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> f64

impl Serialize for OpenClosed01

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where
    __S: Serializer,

impl<'de> Deserialize<'de> for OpenClosed01

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

Auto Trait Implementations

impl Freeze for OpenClosed01

impl RefUnwindSafe for OpenClosed01

impl Send for OpenClosed01

impl Sync for OpenClosed01

impl Unpin for OpenClosed01

impl UnsafeUnpin for OpenClosed01

impl UnwindSafe for OpenClosed01

Blanket Implementations

impl<T> Any for OpenClosed01 where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for OpenClosed01 where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for OpenClosed01 where T: ?Sized,

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

impl<T> CloneToUninit for OpenClosed01 where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> DeserializeOwned for OpenClosed01 where T: for<'de> Deserialize<'de>,

impl<T> From<T> for OpenClosed01

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for OpenClosed01 where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T, U> Into<U> for OpenClosed01 where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for OpenClosed01 where U: Into<T>,

type Error = Infallible;
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto<U> for OpenClosed01 where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>