use crate::numeric::{FloatingPoint, Numeric};
#[cfg(test)]
mod tests;
mod uniform;
pub use uniform::*;
mod uniform_msb;
pub use uniform_msb::*;
mod uniform_lsb;
pub use uniform_lsb::*;
mod gaussian;
pub use gaussian::*;
mod uniform_with_zeros;
pub use uniform_with_zeros::*;
mod uniform_boolean;
pub use uniform_boolean::*;
pub trait RandomGenerable<D: Distribution> {
fn sample(distribution: D) -> Self;
}
pub trait Distribution: seal::Sealed {}
mod seal {
pub trait Sealed {}
impl Sealed for super::Uniform {}
impl Sealed for super::UniformMsb {}
impl Sealed for super::UniformLsb {}
impl Sealed for super::UniformWithZeros {}
impl Sealed for super::UniformBoolean {}
impl<T: super::FloatingPoint> Sealed for super::Gaussian<T> {}
}
impl Distribution for Uniform {}
impl Distribution for UniformMsb {}
impl Distribution for UniformLsb {}
impl Distribution for UniformWithZeros {}
impl Distribution for UniformBoolean {}
impl<T: FloatingPoint> Distribution for Gaussian<T> {}