Rastgele Yürüyüş (Random Walk)

Random walker, en temel hareket simülasyonudur. Her adımda rastgele bir yön seçer ve o yönde hareket eder. Basit görünse de, birçok doğal olayı (molekül hareketi, hayvan göçleri) modeller!

💡 Neden Random Walker ile Başlıyoruz?

Random walker, OOP (nesne yönelimli programlama), animasyon döngüsü (setup/draw) ve rastgelelik kavramlarını tek bir örnekte birleştirir. Mükemmel bir başlangıç noktası!

Walker Sınıfı (The Walker Class)

Bir Walker sınıfı oluşturalım. Bu nesne:

Satır Satır Açıklama:

constructor()
Walker oluşturulduğunda canvas ortasından başlar.
step()
random(-1, 1) -1 ile 1 arasında rastgele ondalık sayı üretir. Her frame'de x ve y bu kadar değişir.
show()
Walker'ı tek bir piksel olarak çizer. point() fonksiyonu tek nokta çizer.

4 Yönlü Walker (Traditional Random Walk)

Klasik random walk sadece 4 yöne gider: yukarı, aşağı, sola, sağa. floor(random(4)) ile 0, 1, 2 veya 3 seçeriz:

4 yönlü ve 8 yönlü random walk
Şekil 0.3: Sol - 4 yönlü hareket (yukarı, aşağı, sol, sağ). Sağ - 9 olası konum (çapraz dahil)

random() ve floor():

random(4)
0 ile 4 arasında ondalık sayı: 0.0, 1.5, 3.99... (4 dahil değil)
floor(random(4))
Aşağı yuvarla → 0, 1, 2 veya 3. Her biri %25 olasılıkla.

🔬 Deneyin:

  1. step() içinde: Adım boyutunu 5 yapın (1 yerine) Beklenti: Daha büyük adımlar, daha hızlı yayılma
  2. Çapraz ekleyin: 8 yönlü hareket için case 4-7 ekleyin Beklenti: Daha organik görünüm

Olasılığı Değiştirme (Biased Random Walk)

Ya walker'ın sağa gitme olasılığı daha yüksek olsun istiyorsak? Eşit olmayan olasılıklar kullanabiliriz:

Olasılık Dağılımı:

r < 0.4
%40 olasılıkla sağa git (0.0 - 0.4 arası)
r < 0.6
%20 olasılıkla sola git (0.4 - 0.6 arası)
r < 0.8
%20 olasılıkla aşağı git (0.6 - 0.8 arası)
else
%20 olasılıkla yukarı git (0.8 - 1.0 arası)

Fareye Doğru Eğilimli Walker (Walker Towards Mouse)

Walker'a %50 olasılıkla fareye doğru gitme eğilimi verelim:

🎮 Akıllı Rastgelelik

Tamamen rastgele değil, ama tamamen öngörülebilir de değil! Bu tür "biased randomness" oyunlarda düşman AI'ları için sıkça kullanılır.

📝 Bu Bölümün Özeti