Rust:
Willekeurige getallen genereren
Hoe te:
Rust is afhankelijk van externe crates voor het genereren van willekeurige getallen, waarbij rand
het meest gebruikt wordt. Om te beginnen met het genereren van willekeurige getallen, moet je eerst rand
toevoegen aan je Cargo.toml
bestand:
[dependencies]
rand = "0.8.5"
Vervolgens kun je in je Rust-code willekeurige getallen genereren met rand
. Hier is een voorbeeld van het genereren van een willekeurig geheel getal en een zwevendekommagetal:
use rand::{Rng, thread_rng};
fn main() {
let mut rng = thread_rng();
// Genereer een willekeurig geheel getal tussen 1 en 10
let random_int: i32 = rng.gen_range(1..=10);
println!("Willekeurig Geheel Getal: {}", random_int);
// Genereer een willekeurig zwevendekommagetal tussen 0.0 en 1.0
let random_float: f64 = rng.gen::<f64>();
println!("Willekeurig Zwevendekommagetal: {}", random_float);
}
Een mogelijke uitvoer zou kunnen zijn:
Willekeurig Geheel Getal: 7
Willekeurig Zwevendekommagetal: 0.9401077112175732
Merk op dat het opnieuw uitvoeren van het programma verschillende waarden zal opleveren.
Diepere Duik
De generatie van willekeurige getallen in Rust, mogelijk gemaakt door rand
en zijn afhankelijkheden zoals getrandom
, vertegenwoordigt een brede abstractie over faciliteiten van het besturingssysteem en algoritmische generatoren. Historisch gezien is willekeurigheid in rekenen geëvolueerd van eenvoudige, voorspelbare algoritmes naar complexe, cryptografisch veilige methoden. Rusts benadering omvat deze evolutie door zijn inplugbare Rng
trait, welke kan worden ondersteund door verschillende generatoren afhankelijk van de vereiste kwaliteit van willekeurigheid en prestatie.
Voor de meeste toepassingen biedt vertrouwen op rand
en de RNG van het systeem een goede balans tussen eenvoud en entropie. Echter, voor cryptografische toepassingen, verwijzen crates zoals rand
naar getrandom
voor seeding, welke op zichzelf vertrouwt op OS-specifieke mechanismen (bv. /dev/urandom
op Unix-achtige systemen), wat cryptografisch veilige willekeurigheid verzekert.
Als alternatief, als je specifieke behoeften hebt die niet worden vervuld door rand
, kan het verkennen van andere crates of het implementeren van aangepaste generatoren gebaseerd op wiskundige modellen een route zijn. Desondanks bieden rand
en zijn ecosysteem voor het overgrote deel van de gebruikscases robuuste oplossingen die zowel efficiënt als eenvoudig te integreren zijn in Rust-applicaties.