Olasılık Nedir? (Probability)

Olasılık, bir olayın gerçekleşme şansını ifade eder. 0 ile 1 arasında (veya %0 ile %100 arası) bir değerdir.

P = İstenen Sonuç Sayısı / Toplam Sonuç Sayısı
Olasılık formülü
Yazı-Tura
2 sonuç, 1 yazı → P(yazı) = 1/2 = 0.5 = %50
Zar Atma
6 sonuç, 1 tane "6" → P(6) = 1/6 ≈ 0.167 = %16.7
random()
Sonsuz sonuç, her değer eşit olasılıklı → Uniform dağılım

Uniform Dağılım (Uniform Distribution)

random() fonksiyonu uniform dağılım üretir: her değer eşit olasılıklıdır.

💡 Histogram Nedir?

Histogram, değerlerin ne sıklıkta görüldüğünü gösteren bir grafiktir. Uniform dağılımda tüm çubuklar yaklaşık aynı yüksekliktedir.

Olasılık ile Kodlama (Coding with Probability)

random(1) ile 0-1 arası değer üretip, olasılık kontrol edebiliriz:

// %10 olasılık
if (random(1) < 0.1) {
  console.log("Bu %10 olasılıkla çalışır!");
}

// %75 olasılık
if (random(1) < 0.75) {
  console.log("Bu %75 olasılıkla çalışır!");
}

// Yazı-tura (%50)
if (random(1) < 0.5) {
  console.log("Yazı!");
} else {
  console.log("Tura!");
}

🔬 Deneyin:

  1. Satır 8: 0.9 yapın Beklenti: Daha çok kırmızı daire
  2. Satır 8: 0.1 yapın Beklenti: Çoğunlukla mavi daire

Ağırlıklı Olasılık (Weighted Probability)

Farklı seçeneklere farklı olasılıklar atamak istiyorsak ağırlıklı olasılık kullanırız:

Ağırlıklı Seçim Algoritması:

1. Rastgele sayı
random(toplam) ile 0'dan toplam ağırlığa kadar sayı seç
2. Kümülatif toplam
Ağırlıkları topla, rastgele sayıyı geçince dur

Özel Olasılık: Büyük Sayıları Tercih Etme (Custom Probability)

Ya daha büyük sayıların seçilme olasılığı daha yüksek olsun istiyorsak? Mesela 0-1 arası bir sayı seçelim ama 1'e yakın sayılar daha çok seçilsin.

y=x olasılık grafiği
Şekil 0.3: y = x grafiği. y, x değerinin seçilme olasılığını gösterir. x büyüdükçe seçilme şansı artar.

Bunu yapmak için "qualifying random" yöntemi kullanabiliriz: iki rastgele sayı seç, ikincisi birinciden küçükse kabul et.

Algoritma Nasıl Çalışır:

1. r1 seç
İlk rastgele sayı (0-1 arası) - bu aday değerimiz
2. r2 seç
İkinci rastgele sayı - bu "eleme" değerimiz
3. r2 < r1 ise kabul
r1 büyükse (1'e yakınsa) r2'nin ondan küçük olma olasılığı yüksek! Yani büyük r1 değerleri daha çok kabul edilir.

map() Fonksiyonu (The map() Function)

map() fonksiyonu, bir değeri bir aralıktan başka bir aralığa dönüştürür. Rastgelelikle çalışırken çok kullanışlıdır!

map() fonksiyonu
Şekil 0.6: map() fonksiyonu bir değeri oransal olarak başka bir aralığa dönüştürür
map(değer, eski_min, eski_max, yeni_min, yeni_max)
Değeri bir aralıktan diğerine oransal olarak dönüştürür
// random() 0-1 verir, bunu 100-500'e çevir
let size = map(random(), 0, 1, 100, 500);

// Fare x pozisyonunu (0-width) renge (0-255) çevir
let red = map(mouseX, 0, width, 0, 255);

// noise() 0-1 verir, bunu -50 ile 50'ye çevir
let offset = map(noise(t), 0, 1, -50, 50);

🎮 map() Kullanım Alanları

  • Noise → Konum: map(noise(t), 0, 1, 0, width)
  • Fare → Renk: map(mouseX, 0, width, 0, 255)
  • Mesafe → Boyut: map(dist, 0, maxDist, 50, 10)

Bağımsız Olaylar (Independent Events)

İki olay bağımsız ise, birinin sonucu diğerini etkilemez. Her random() çağrısı bağımsızdır!

P(A ve B) = P(A) × P(B)
Bağımsız olaylarda olasılıklar çarpılır
// İki yazı üst üste gelme olasılığı
// P(yazı) = 0.5
// P(yazı ve yazı) = 0.5 × 0.5 = 0.25 = %25

// Üç 6 üst üste gelme olasılığı
// P(6) = 1/6 ≈ 0.167
// P(6 ve 6 ve 6) = (1/6)³ ≈ 0.005 = %0.5

⚠️ Kumarbaz Yanılgısı

"5 kez yazı geldi, artık tura gelme olasılığı arttı!" → YANLIŞ! Her atış bağımsız, olasılık hep %50 kalır. Bu yanlış inanışa "Gambler's Fallacy" denir.

📝 Bu Bölümün Özeti