Rust:
Генерація випадкових чисел
Як це зробити:
Rust покладається на зовнішні крейти для генерації випадкових чисел, серед яких rand
є найбільш вживаним. Щоб почати генерувати випадкові числа, спочатку потрібно додати rand
у ваш файл Cargo.toml
:
[dependencies]
rand = "0.8.5"
Далі, ви можете генерувати випадкові числа, використовуючи rand
у вашому коді Rust. Ось приклад генерації випадкового цілого числа та числа з плаваючою комою:
use rand::{Rng, thread_rng};
fn main() {
let mut rng = thread_rng();
// Генерація випадкового цілого числа від 1 до 10
let random_int: i32 = rng.gen_range(1..=10);
println!("Випадкове ціле число: {}", random_int);
// Генерація випадкового числа з плаваючою комою від 0.0 до 1.0
let random_float: f64 = rng.gen::<f64>();
println!("Випадкове число з плаваючою комою: {}", random_float);
}
Приклад результату:
Випадкове ціле число: 7
Випадкове число з плаваючою комою: 0.9401077112175732
Зверніть увагу, що перезапуск програми виробить інші значення.
Поглиблений аналіз
Генерація випадкових чисел у Rust, забезпечена через rand
та його залежності, такі як getrandom
, представляє широку абстракцію над засобами операційних систем та алгоритмічними генераторами. Історично, випадковість у обчисленнях еволюціонувала від простих, передбачуваних алгоритмів до складних, криптографічно безпечних методів. Підхід Rust узагальнює цю еволюцію через його підключаємий трейт Rng
, який може базуватися на різних генераторах згідно з необхідною якістю випадковості та продуктивністю.
Для більшості застосунків, спирання на rand
та RNG системи забезпечує гарний баланс між простотою та ентропією. Однак для криптографічних застосунків, крейти, подібні до rand
, переходять до getrandom
для початкового заповнення, який, у свою чергу, покладається на механізми, специфічні для ОС (наприклад, /dev/urandom
на системах, подібних до Unix), забезпечуючи криптографічно безпечну випадковість.
Альтернативно, якщо у вас є специфічні потреби, які не задовольняються rand
, розвідка інших крейтів або реалізація власних генераторів на основі математичних моделей може бути шляхом. Тим не менш, для переважної більшості випадків використання, rand
та його екосистема забезпечують надійні рішення, які є ефективними та простими для інтеграції в застосунки на Rust.