pub trait Random {
type Type;
// Required method
fn random_type(&self) -> Self::Type;
// Provided methods
fn random_rate(&self, value: u32) -> u32 { ... }
fn random(&self, min: f64, max: f64) -> f64 { ... }
fn half(&self) -> bool { ... }
fn usually(&self) -> bool { ... }
fn often(&self) -> bool { ... }
fn hardly(&self) -> bool { ... }
fn barely(&self) -> bool { ... }
}