متدهها و آزمایشات مونت کارلو به دسته ای از الگوریتمهای محاسباتی گفته میشود که برای به دست آوردن نتایج بر نمونه سازی تصادفی تکراری استوار هستند.

این متدها بیشتر برای محاسبات توسط کامپیوتر مناسب هستند و وقتی به کار میروند که محاسبه نتیجه قطعی با یک الگوریتم مشخص ممکن و یا به صرفه نباشد.

محاسبات

در اینجا سعی خواهیم کرد مقدار تخمینی عدد پی را با استفاده از این متد محاسبه کنیم. اجازه دهید با مبانی ریاضی مساله شروع کنیم.

ایده اصلی این است که مساحت یک ناحیه را با استفاده از شمردن تعداد نقطه هایی که بصورت تصادفی در آن ناحیه پخش شده اند، تقریب بزنیم. تعداد نقاطی که در داخل دایره واقع شده اند را با تعداد کل نقاط در کل ناحیه مقایسه خواهیم کرد.

نقطه دایره

با استفاده از رابطه بین این نواحی و دانستن فرمول مساحت مربع و دایره خواهیم داشت :

بنابراین:

پیاده سازی


#!/usr/bin/env python

import random
from math import pi

def withinCircle(x,y):
  """Checks whether a point is in a circle"""
  if(x**2 + y**2 < 1):
    return True
  else:
    return False

def calculatePi(points = 100000):
  """Calculating Pi using random numbers"""
  circleArea = 0 # The dots in a circle
  squareArea = 0 # The dots in a square

  # Random selection of dots
  for i in range(0, points):
    # Coordinates of a random dot
    x = random.random() # x-coordinate
    y = random.random() # y-coordinate

    # Checking whether the dot is inside the circle
    if(withinCircle(x, y) == 1):
      circleArea = circleArea + 1 # Add it

    # Is certainly in the square
    squareArea = squareArea + 1 # Add it

  # Our formula
  return 4.0 * circleArea / squareArea

if __name__ == "__main__":
  my = calculatePi()

  # Conclusions
  print "Approximate value for Pi:        ", my
  print "Difference to exact value of Pi: ", my - pi
  print "Error in percent:                ", (my - pi) / pi * 100, "%"

تحلیل

محاسبه پی

نتایج


Approximate value for Pi:         3.1424
Difference to exact value of Pi:  0.000807346410207
Error in percent:                 0.0256986343944 %

منبع : Monte Carlo method, calculating π