CodeBlanks Logo Icon CodeBlanks

Rastgele sayı

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..=100

Bu 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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
use rand::____;

let gizli = rand::thread_rng().gen_range(1..=100);
Cevap
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

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma