Stokastik prosesleri öğrenmek için yeni bir kitaba başladım. Bir hafta olmadı daha. Üniversite’de de stokastik dersleri almıştım ama o zamanlarda bilgisayarlarla ilgim yoktu ve sadece teorik kısmını anlamaya çalışmıştım. Bu prosesleri asla somutlaştırmayı, bir şekilde simüle etmeyi denememiştim. Artık matematiksel kısmından çok deneysel kısmına odaklanmak istiyorum. Belki bu konuyu biraz daha sezgisel anlamayı başarabilirim.
İlk deneyde bir kumarbaz var. Bu kumarbazınbaşlangıçta k (bir tamsayı) doları var. Kumarbazımız basit bir yazı tura oyunu oynamayı düşünüyor. Eğer yazı gelirse 1 dolar kazanacak, tura gelirse 1 dolar kaybedecek. Oyun iki şekilde bitebiliyor. Ya kumarbazın hiç parası kalmadığında ya da kumarbazın n doları olduğunda. Burada n de k sayısından daha büyük bir tamsayı.
Bu deneyde bulmak istediğim şey, kumarbazın hangi ihtimalle parasını kaybedeceği. Yazının sonunda simülasyonda kullandığım kodu da (R dilinde) vereceğim.
Bu sorunun cevabının matematiksel olarak nasıl bulunacağını bu yazıda göstermeyeceğim.
Önce, kumarbazımızın olası oyunlarının nasıl görünebileceğini bir iki grafikle görelim. Bütün simülasyonlarda hilesiz para kullandım, yani yazı veya tura gelme ihtimalleri yüzde elli.

Bu grafikte kumarbaz oyunu kazanıyor. Başlangıçta 20 dolar ile başlıyor ve 350 kez civarında yazı tura attıktan sonra 40 dolara ulaşıyor ve oyun bitiyor.

Bu simülasyonda ise kumarbazımız 400 kez yazı tura oynadıktan sonra bütün parasını kaybediyor.
Kumarbazın bu oyunu kazanma ihtimalini deneysel olarak bulmak içinse oyunu birçok defa oynayıp kaçını kazandığını ve kaçını da kaybettiğini saymamız yeterli olacaktır. Aşağıdaki simülasyonları kumarbazın oyunu 1000 kere oynadığı durumlar için yaptım. Paramız hala hilesiz.

Başlangıç parası 20$ ve hedef kazanç 40$ olduğunda yukarıdaki histogramı elde ettim. Soldaki mavi sütun kumarbazın kaç oyunu kaybettiğini, sağdaki mavi sütun da kaç oyunu kazandığını gösteriyor. Kırmızı çizgi de kayıpların toplam oyun sayısına oranını veriyor. Yani kumarbazımız bu oyunun sadece yüzde ellisine yakınını kaybetmiş.

Bu simülasyonda başlangıç parası 20 dolar ama hedef para 60 dolar. Kumarbaz bu oyunların yüzde 64’ünü kaybetmiş.

Başlangıç parasını 20$, hedefi de 80$ yaptığımda da yukarıdaki histogramı elde ettim. Kaybetme oranı bu sefer yüzde 74 oldu.
Bu üç simülasyona bakınca kaybetme oranı sanki (hedef parası – başlangıç parası) / hedef parası gibi gözüküyor. O zaman hedef parasını 100 $’a çıkarırsak kaybetme oranı da yüzde seksene yaklaşmalı. Bunu da denedim.

Sonuç gerçekten beklediğimiz sonuçla uyum içinde. Problemin matematiksel çözümü de aynı sonucu vermekte.
Simülasyonlar ve grafikler için kullandığım R kodu aşağıdadır.
gamble fonksiyonu, kumarbazın bir oyunu için kullanılmaktadır.
k = kumarbazın başlangıçtaki parası
n = kumarbazın ulaşmak istediği para miktarı
p = yazı gelme olasılığı
simulate_gamble fonksiyonu bir oyun sırasında her adımdaki para miktarını simüle edip sonuçları bir grafik olarak gösterir.
do_the_experiment fonksiyonu da bu oyunu bin kere oynatıp sonuçları bir histogram şeklinde gösterir.
gamble <- function(k, n, p) {
coin_sides <- c("Heads", "Tails")
probabilities_heads_bias <- c(p, 1 - p)
state <- k
while (state > 0 && state < n) {
single_toss <- sample(x = coin_sides, size = 1, replace = TRUE, prob = probabilities_heads_bias)
if (single_toss == "Heads") {
state <- state + 1
} else {
state <- state - 1
}
}
if (state == 0) {
return (1)
}
return (0)
}
simulate_gamble <- function(k, n, p) {
if (k <= 0 || k >= n || p < 0 || p > 1) {
stop("Invalid input: Ensure 0 < k < n and 0 <= p <= 1")
}
coin_sides <- c("Heads", "Tails")
probabilities_heads_bias <- c(p, 1 - p)
state <- k
random_walk <- c(k)
while (state > 0 && state < n) {
single_toss <- sample(x = coin_sides, size = 1, replace = TRUE, prob = probabilities_heads_bias)
if (single_toss == "Heads") {
state <- state + 1
} else {
state <- state - 1
}
random_walk <- c(random_walk, state)
}
plot(random_walk,
type = "l", # "l" for lines is often better for walks, or "b" for both
lwd = 1.5, # Line width
col = "blue", # Line color
main = "Kumarbazın rasgele yürüyüşü", # Corrected title
xlab = "Adım sayısı", # Corrected label
ylab = "Kazanç durumu", # Corrected label
ylim = c(0, n)
)
# Add horizontal lines for boundaries (optional)
abline(h = 0, col = "red", lty = 2)
abline(h = n, col = "red", lty = 2)
}
do_the_experiment <- function(k, n, p) {
if (k <= 0 || k >= n || p < 0 || p > 1) {
stop("Invalid input: Ensure 0 < k < n and 0 <= p <= 1")
}
trials <- 1000
simlist <- replicate(trials, gamble(k,n,p))
mean_value <- mean(simlist)
hist(simlist,
main = paste("Kazançların ve kayıpların histogramı"),
xlab = "Kazançlar/Kayıplar",
col = "lightblue")
abline(v = mean_value,
col = "red",
lwd = 3)
legend("topright", legend = paste("Ortalama =", round(mean_value, 2)),
col = "red", lty = 1, lwd = 3)
}