🎲 random - Rastgele Sayı Üretimi

RNG, Distributions, Sampling, Shuffle

44
Fonksiyon
598
Satır
19 KB
Boyut

🚀 Hızlı Başlangıç

içe_aktar random

// Random integer [0, 100)
değişken x = random.aralık(0, 100)

// Random float [0.0, 1.0)
değişken f = random.kesir()

// Random boolean
değişken b = random.bool()

// Random choice
değişken renkler = ["kırmızı", "yeşil", "mavi"]
değişken seçilen = random.seç(renkler)

// Shuffle
değişken deste = [1, 2, 3, 4, 5]
random.karıştır(deste)

// Seed (reproducible)
random.seed(42)
yazdır(random.aralık(0, 100))  // Her zaman aynı sonuç

// Distributions
değişken normal = random.normal(0.0, 1.0)  // μ=0, σ=1
değişken uniform = random.uniform(10.0, 20.0)
değişken exponential = random.exponential(1.5)

📚 RNG Algoritmaları

💡 Örnekler

Monte Carlo Simülasyonu (Pi Tahmini)

içe_aktar random, math

fonksiyon pi_tahmini(numune_sayısı: tamsayı) -> kesir yap
    değişken daire_içi = 0
    
    her i içinde aralık(0, numune_sayısı) için yap
        değişken x = random.kesir()
        değişken y = random.kesir()
        
        // Nokta birim daire içinde mi?
        eğer (x*x + y*y) < 1.0 ise yap
            daire_içi = daire_içi + 1
        son
    son
    
    // Pi ≈ 4 * (daire içi nokta sayısı / toplam nokta sayısı)
    dön 4.0 * daire_içi.kesir() / numune_sayısı.kesir()
son

değişken tahmin = pi_tahmini(1000000)
yazdır("Pi tahmini: " + tahmin.yazıya())
yazdır("Gerçek Pi: " + math.PI.yazıya())
yazdır("Hata: " + math.abs(tahmin - math.PI).yazıya())

Weighted Random Selection

içe_aktar random

fonksiyon weighted_choice(items: Dizi, weights: Dizi) -> herhangi yap
    // Kümülatif ağırlıklar
    değişken total = 0.0
    değişken cumulative = []
    
    her w içinde weights için yap
        total = total + w
        cumulative.ekle(total)
    son
    
    // Random seçim
    değişken r = random.kesir() * total
    
    her i içinde aralık(0, cumulative.uzunluk()) için yap
        eğer r < cumulative[i] ise yap
            dön items[i]
        son
    son
    
    dön items[items.uzunluk() - 1]
son

// Örnek: Loot sistemi (oyun)
değişken loot = ["Common", "Uncommon", "Rare", "Epic", "Legendary"]
değişken chances = [50.0, 30.0, 15.0, 4.0, 1.0]  // %

değişken bulunan = yap son
her i içinde aralık(0, 100) için yap
    değişken item = weighted_choice(loot, chances)
    
    eğer bulunan.içerir_mi(item) ise yap
        bulunan[item] = bulunan[item] + 1
    son değilse yap
        bulunan[item] = 1
    son
son

her (item, count) içinde bulunan için yap
    yazdır(item + ": " + count.yazıya() + " (" + (count.kesir()).yazıya() + "%)")
son

← Tüm Modüller