use rand::Rng;
use rand::random;
use rand::thread_rng;
use crate::stringlib::ASCII_LOWERCASE;
use crate::stringlib::ASCII_UPPERCASE;
pub fn random_float() -> f32 {
random()
}
pub fn random_i32() -> i32 {
thread_rng().gen::<i32>()
}
pub fn random_digit() -> i32 {
thread_rng().gen_range(0..10)
}
pub fn random_ascii_char() -> char {
thread_rng().gen_range(0..128u8) as char
}
pub fn random_alpha_lower_char() -> char {
let index = thread_rng().gen_range(0..26usize);
ASCII_LOWERCASE[index]
}
pub fn random_alpha_upper_char() -> char {
let index = thread_rng().gen_range(0..26usize);
ASCII_UPPERCASE[index]
}
#[doc = include_str!("../../docs/random/random/fn_random_choice.md")]
pub fn random_choice<T>(collection: &[T]) -> Option<&T> {
if collection.is_empty() {
return None;
}
let index = thread_rng().gen_range(0..collection.len());
collection.get(index)
}