lld_rand 0.0.1

Children's programming homework
Documentation
use std::sync::atomic::*; //{AtomicI32, Ordering}

pub fn r0_99() -> u8 {
    static COUNT: AtomicI32 = AtomicI32::new(-1);
    let str = "008577095774393111917928597195874433131938338637275934493171978958777335994573311999778817396014613372111011188374360746334722310313887751613467349227107179077576174793532291091991176161948735923311323919769631491367239127299297736414993732411313193778764350337925113737941797647509383257139419478096535213892631494395381165952339726915147967821661541401271157539718236735474092771635997782767755741928116761983829683563421283173679918396915694312931797199785370157143330718173";

    if COUNT.load(Ordering::SeqCst) == -1 {
        let now = std::time::SystemTime::now();
        let duration = now.duration_since(std::time::UNIX_EPOCH).unwrap();
        let seed = duration.as_secs() as u32;
        COUNT.store(seed as i32 % str.len() as i32 - 1, Ordering::SeqCst);
    }
    //print!("COUNT {}  ", COUNT.load(Ordering::SeqCst));   
    //println!("str  {}", &str[COUNT.load(Ordering::SeqCst) as usize .. COUNT.load(Ordering::SeqCst) as usize + 2]);
    let r = &str[COUNT.load(Ordering::SeqCst) as usize .. COUNT.load(Ordering::SeqCst) as usize + 2];
    COUNT.fetch_add(1, Ordering::SeqCst);

    if COUNT.load(Ordering::SeqCst) > str.len() as i32 - 1 {
        COUNT.store(0, Ordering::SeqCst);
    }
    r.parse::<u8>().unwrap()
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn t1() {
        for _ in 0..100 {
            let result = r0_99();
            assert!(result <= 99);
        }
    }


}


//static mut COUNT: u64 = 0;
    // unsafe {
    //     COUNT += 1;
    //     aaa = COUNT;
    // };