Вот несколько методов генерации случайных чисел в Rust вместе с примерами кода:
-
Стандартная библиотека (ящик с рандом):
use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let random_number: u32 = rng.gen(); println!("Random number: {}", random_number); }
-
Крипто-случайный (ящик с рандом):
use rand::RngCore; use rand::rngs::OsRng; fn main() { let mut rng = OsRng; let mut random_number = [0u8; 4]; rng.fill_bytes(&mut random_number); let random_number = u32::from_le_bytes(random_number); println!("Random number: {}", random_number); }
-
Алгоритм Xorshift:
struct Xorshift { x: u32, y: u32, z: u32, w: u32, } impl Xorshift { fn new() -> Xorshift { // Provide your own seed values here Xorshift { x: 123456789, y: 362436069, z: 521288629, w: 88675123 } } fn next(&mut self) -> u32 { let t = self.x ^ (self.x << 11); self.x = self.y; self.y = self.z; self.z = self.w; self.w = self.w ^ (self.w >> 19) ^ (t ^ (t >> 8)); self.w } } fn main() { let mut rng = Xorshift::new(); let random_number = rng.next(); println!("Random number: {}", random_number); }
-
Алгоритм SmallRng (ячейка rand):
use rand::SeedableRng; use rand::rngs::SmallRng; fn main() { let mut rng = SmallRng::from_entropy(); let random_number: u32 = rng.gen(); println!("Random number: {}", random_number); }