Struct Open01

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::Rng;
use rand::distr::Open01;

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

Implementations

impl Clone for Open01

fn clone(self: &Self) -> Open01

impl Copy for Open01

impl Debug for Open01

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

impl Default for Open01

fn default() -> Open01

impl Distribution for Open01

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

impl Distribution for Open01

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

impl Freeze for Open01

impl RefUnwindSafe for Open01

impl Send for Open01

impl Serialize for Open01

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

impl Sync for Open01

impl Unpin for Open01

impl UnsafeUnpin for Open01

impl UnwindSafe for Open01

impl<'de> Deserialize for Open01

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

impl<T> Any for Open01

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for Open01

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for Open01

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

impl<T> CloneToUninit for Open01

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

impl<T> DeserializeOwned for Open01

impl<T> From for Open01

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for Open01

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T, U> Into for Open01

fn into(self: 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 for Open01

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

impl<T, U> TryInto for Open01

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

impl<V, T> VZip for Open01

fn vzip(self: Self) -> V