Monte Carlo benzetimi nedir?

Python ile Monte Carlo Simülasyonları

Izzy Weber

Curriculum Manager, DataCamp

Benzetimler ve Monte Carlo benzetimleri

Benzetimler:
  • Gerçekliği taklit etmeye çalışan deneyler
  • Çoğunlukla bilgisayar programları kullanır

 

Monte Carlo benzetimleri:
  • Rastgele değişkenlerin etkilediği farklı sonuçların olasılığını öngörmek için kullanılır
  • Sayısal sonuçlar için tekrarlı rastgele örnekleme yapar
  • Model rastgele örneklemeye dayandığı için sonuçlar stokastiktir
Python ile Monte Carlo Simülasyonları

Benzetim örneği

Altı yüzlü zar atma
  • Tom adil bir altı yüzlü zarı $n$ kez atar
  • Her atıştan sonra sonucu kaydeder
  • Sonra zarı bir çantaya koyar ve sonraki atış için yenisini seçer

Sorular

  1. Tom $n$ atıştan sonra kaç zar biriktirir?
  2. $n$ atıştan sonra ortalama sonuç kaç olur?

 

bir el zar atıyor

Python ile Monte Carlo Simülasyonları

Tom'un sonuçlarını benzetmek

  • total_dice: $n$ atıştan sonra Tom'un çantasındaki zar sayısı
  • mean_point_dice: $n$ atıştan sonraki tüm sonuçların ortalaması
import random
import numpy as np

def roll_dice(n, seed): random.seed(seed) total_dice = 0 point_dice = []
for i in range(n): total_dice += 1 point_dice.append(random.randint(1, 6))
mean_point_dice = np.mean(point_dice)
return([total_dice, mean_point_dice])
Python ile Monte Carlo Simülasyonları

Benzetim sonuçları

Benzetim Bir:

seed=1231

print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Benzetim İki:

seed=3124
print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Sonuçlar:

[10, 3.6]

[100, 3.5]
[1000, 3.495]
[10000, 3.503]

Sonuçlar:

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Python ile Monte Carlo Simülasyonları

Büyük Sayılar Yasası

Aynı dağılımlı, rastgele üretilen değişkenlerin sayısı arttıkça, örnek ortalaması kuramsal ortalamaya yaklaşır.

Benzetim Üç (seed = 3124):

print(roll_dice(100000, seed))
print(roll_dice(500000, seed))
print(roll_dice(1000000, seed))

Sonuçlar:

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Python ile Monte Carlo Simülasyonları

Hadi pratik yapalım!

Python ile Monte Carlo Simülasyonları

Preparing Video For Download...