Struct solana_evm_loader_program::scope::evm::secp256k1::rand::distributions::Standard [−][src]
A generic random value distribution, implemented for many primitive types. Usually generates values with a numerically uniform distribution, and with a range appropriate to the type.
Built-in Implementations
Assuming the provided Rng
is well-behaved, these implementations
generate values with the following ranges and distributions:
- Integers (
i32
,u32
,isize
,usize
, etc.): Uniformly distributed over all values of the type. char
: Uniformly distributed over all Unicode scalar values, i.e. all code points in the range0...0x10_FFFF
, except for the range0xD800...0xDFFF
(the surrogate code points). This includes unassigned/reserved code points.bool
: Generatesfalse
ortrue
, each with probability 0.5.- Floating point types (
f32
andf64
): Uniformly distributed in the half-open range[0, 1)
. See notes below. - Wrapping integers (
Wrapping<T>
), besides the type identical to their normal integer variants.
The following aggregate types also implement the distribution Standard
as
long as their component types implement it:
- Tuples and arrays: Each element of the tuple or array is generated
independently, using the
Standard
distribution recursively. Option<T>
whereStandard
is implemented forT
: ReturnsNone
with probability 0.5; otherwise generates a randomx: T
and returnsSome(x)
.
Example
use rand::prelude::*; use rand::distributions::Standard; let val: f32 = SmallRng::from_entropy().sample(Standard); println!("f32 from [0, 1): {}", val);
Floating point implementation
The floating point implementations for Standard
generate a random value in
the half-open interval [0, 1)
, i.e. including 0 but not 1.
All values that can be generated are of the form n * ε/2
. For f32
the 23 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: (rng.gen::<$uty>() >> N) as $ty * (ε/2)
.
See also: Open01
which samples from (0, 1)
, OpenClosed01
which
samples from (0, 1]
and Rng::gen_range(0, 1)
which also samples from
[0, 1)
. Note that Open01
and gen_range
(which uses Uniform
) use
transmute-based methods which yield 1 bit less precision but may perform
faster on some architectures (on modern Intel CPUs all methods have
approximately equal performance).
Trait Implementations
impl Clone for Standard
[src][+]
impl Copy for Standard
[src]
impl Debug for Standard
[src][+]
impl<T> Distribution<[T; 0]> for Standard
[src][+]
impl<T> Distribution<[T; 1]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 10]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 11]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 12]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 13]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 14]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 15]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 16]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 17]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 18]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 19]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 2]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 20]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 21]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 22]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 23]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 24]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 25]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 26]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 27]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 28]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 29]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 3]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 30]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 31]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 32]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 4]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 5]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 6]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 7]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 8]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<[T; 9]> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl Distribution<()> for Standard
[src][+]
impl<A, B, C, D, E, F, G, H, I, J, K, L> Distribution<(A, B, C, D, E, F, G, H, I, J, K, L)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
Standard: Distribution<K>,
Standard: Distribution<L>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
Standard: Distribution<K>,
Standard: Distribution<L>,
impl<A, B, C, D, E, F, G, H, I, J, K> Distribution<(A, B, C, D, E, F, G, H, I, J, K)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
Standard: Distribution<K>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
Standard: Distribution<K>,
impl<A, B, C, D, E, F, G, H, I, J> Distribution<(A, B, C, D, E, F, G, H, I, J)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
Standard: Distribution<J>,
impl<A, B, C, D, E, F, G, H, I> Distribution<(A, B, C, D, E, F, G, H, I)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
Standard: Distribution<I>,
impl<A, B, C, D, E, F, G, H> Distribution<(A, B, C, D, E, F, G, H)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
Standard: Distribution<H>,
impl<A, B, C, D, E, F, G> Distribution<(A, B, C, D, E, F, G)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
Standard: Distribution<G>,
impl<A, B, C, D, E, F> Distribution<(A, B, C, D, E, F)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
Standard: Distribution<F>,
impl<A, B, C, D, E> Distribution<(A, B, C, D, E)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
Standard: Distribution<E>,
impl<A, B, C, D> Distribution<(A, B, C, D)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
Standard: Distribution<D>,
impl<A, B, C> Distribution<(A, B, C)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
Standard: Distribution<C>,
impl<A, B> Distribution<(A, B)> for Standard where
Standard: Distribution<A>,
Standard: Distribution<B>,
[src][+]
Standard: Distribution<A>,
Standard: Distribution<B>,
impl<A> Distribution<(A,)> for Standard where
Standard: Distribution<A>,
[src][+]
Standard: Distribution<A>,
impl<T> Distribution<Option<T>> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl<T> Distribution<Wrapping<T>> for Standard where
Standard: Distribution<T>,
[src][+]
Standard: Distribution<T>,
impl Distribution<bool> for Standard
[src][+]
impl Distribution<char> for Standard
[src][+]
impl Distribution<f32> for Standard
[src][+]
impl Distribution<f64> for Standard
[src][+]
impl Distribution<i128> for Standard
[src][+]
impl Distribution<i16> for Standard
[src][+]
impl Distribution<i32> for Standard
[src][+]
impl Distribution<i64> for Standard
[src][+]
impl Distribution<i8> for Standard
[src][+]
impl Distribution<isize> for Standard
[src][+]
impl Distribution<u128> for Standard
[src][+]
impl Distribution<u16> for Standard
[src][+]
impl Distribution<u32> for Standard
[src][+]
impl Distribution<u64> for Standard
[src][+]
impl Distribution<u8> for Standard
[src][+]
impl Distribution<usize> for Standard
[src][+]
Auto Trait Implementations
impl RefUnwindSafe for Standard
impl Send for Standard
impl Sync for Standard
impl Unpin for Standard
impl UnwindSafe for Standard
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> MaybeDebug for T where
T: Debug,
[src]
T: Debug,
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<T> Typeable for T where
T: Any,
[+]
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src][+]
V: MultiLane<T>,