Rastgele sayı
- Rust kursu
- Başlangıç
- Ders 63/115
- 6 dk
rand crate'i ile gizli sayı üretirsin.
Rastgele sayı
Rust'ın standart kütüphanesinde rastgele sayı üreteci yoktur; bunun için rand crate'i kullanılır. Cargo.toml'a bağımlılık eklenir ve cargo build onu indirir:
[dependencies]
rand = "0.8"use rand::Rng;
let gizli = rand::thread_rng().gen_range(1..=100);gen_range metodu Rng trait'inden gelir; trait kapsama alınmadan (use rand::Rng;) çağrılamaz.
Crate olmadan: basit üreteç
Alıştırma ortamında dış crate indirilemediği için, öğrenme amacıyla basit bir doğrusal eşlik üreteci (LCG) yazabiliriz. Aynı tohum her zaman aynı sırayı verir; bu da test etmeyi kolaylaştırır:
let mut tohum: u64 = 42;
tohum = (tohum * 1103515245 + 12345) % 2147483648;
let gizli = tohum % 100 + 1; // 1..=100Bu yöntem güvenlik için uygun değildir; gerçek programlarda rand kullan.
Uygulama Gizli sayı üret
let mut tohum: u64 = 42; ile başla. Bir kez tohum = (tohum * 1103515245 + 12345) % 2147483648; uygula, ardından tohum % 100 + 1 ile gizli sayıyı hesapla ve Gizli sayı: ... biçiminde yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let mut tohum: u64 = 42;
tohum = (tohum * 1103515245 + 12345) % 2147483648;
let gizli = tohum % 100 + 1;
println!("Gizli sayı: {}", gizli);
}Beklenen çıktı
Gizli sayı: 28
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>gen_range(1..=100)</code> hangi değerleri üretebilir?
- 0 ile 99 arası
- 1 ile 99 arası
- Herhangi bir u32
- 1 ile 100 arası, ikisi de dahil Doğru cevap
Açıklama: ..= kapsayıcı aralıktır; 100 de dahildir.
2 Trait'i kapsama al
use rand::____;
let gizli = rand::thread_rng().gen_range(1..=100);
use rand::Rng;
let gizli = rand::thread_rng().gen_range(1..=100);
Açıklama: gen_range, Rng trait'inin metodudur.
3 Parça ve anlamı
| Kavram | Anlamı |
|---|---|
rand = "0.8" |
Bağımlılık |
thread_rng() |
Üreteç |
gen_range(1..=100) |
1–100 arası |
% 100 + 1 |
Aralığa indirger |