Struct OpenClosed01

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

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

Implementations

impl Clone for OpenClosed01

fn clone(self: &Self) -> OpenClosed01

impl Copy for OpenClosed01

impl Debug for OpenClosed01

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

impl Default for OpenClosed01

fn default() -> OpenClosed01

impl Distribution for OpenClosed01

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

impl Distribution for OpenClosed01

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

impl Freeze for OpenClosed01

impl RefUnwindSafe for OpenClosed01

impl Send for OpenClosed01

impl Serialize for OpenClosed01

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

impl Sync for OpenClosed01

impl Unpin for OpenClosed01

impl UnsafeUnpin for OpenClosed01

impl UnwindSafe for OpenClosed01

impl<'de> Deserialize for OpenClosed01

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

impl<T> Any for OpenClosed01

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for OpenClosed01

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

impl<T> BorrowMut for OpenClosed01

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

impl<T> CloneToUninit for OpenClosed01

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

impl<T> DeserializeOwned for OpenClosed01

impl<T> From for OpenClosed01

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for OpenClosed01

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

impl<T, U> Into for OpenClosed01

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 OpenClosed01

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

impl<T, U> TryInto for OpenClosed01

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

impl<V, T> VZip for OpenClosed01

fn vzip(self: Self) -> V