Struct Open01

pub struct Open01;

A distribution to sample floating point numbers uniformly in the open interval (0, 1), i.e. not including either endpoint.

All values that can be generated are of the form n * ε + ε/2. For f32 the 23 most significant random bits of an u32 are used, for f64 52 from an u64. The conversion uses a transmute-based method.

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

Example

use rand::RngExt;
use rand::distr::Open01;

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

Trait Implementations

impl Clone for Open01

fn clone(&self) -> Open01

impl Copy for Open01

impl Debug for Open01

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

impl Default for Open01

fn default() -> Open01

impl Distribution<f32> for Open01

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

impl Distribution<f64> for Open01

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

impl Serialize for Open01

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

impl<'de> Deserialize<'de> for Open01

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

Auto Trait Implementations

impl Freeze for Open01

impl RefUnwindSafe for Open01

impl Send for Open01

impl Sync for Open01

impl Unpin for Open01

impl UnsafeUnpin for Open01

impl UnwindSafe for Open01

Blanket Implementations

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

fn type_id(&self) -> TypeId

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

fn borrow(&self) -> &T

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

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

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

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

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

impl<T> From<T> for Open01

fn from(t: T) -> T

Returns the argument unchanged.

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

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

impl<T, U> Into<U> for Open01 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 Open01 where U: Into<T>,

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

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

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