O processo de Monte Carlo

Simulações de Monte Carlo em Python

Izzy Weber

Curriculum Manager, DataCamp

Etapas da simulação

  1. Definir as variáveis de entrada e escolher distribuições de probabilidade

  2. Gerar entradas amostrando dessas distribuições

  3. Fazer um cálculo determinístico com as entradas simuladas

  4. Resumir os resultados

Simulações de Monte Carlo em Python

Calculando o valor de pi

Gere pontos aleatórios $(x, y)$ em que $x$ e $y$ estão no intervalo de -1 a 1.

Um gráfico de um círculo dentro de um quadrado com pontos amostrados aleatoriamente

$$Area_{circle} = \pi $$

$$Area_{square} = 2 \times 2 = 4 $$

$$\frac{Area_{circle}}{Area_{square}} = \frac{\pi}{4} $$

$$\frac{n_{red}}{n_{all}} = \frac{\pi}{4} $$

$$ \pi = 4 \times \frac{n_{red}}{n_{all}}$$

Simulações de Monte Carlo em Python

Etapa 1

Defina as variáveis de entrada e escolha distribuições de probabilidade

  • Entradas: os pontos individuais representados por coordenadas $(x, y)$
  • Distribuições de probabilidade: $x$ e $y$ seguem distribuições uniformes de menos um a um.

 

circle_points = 0 
square_points = 0
Simulações de Monte Carlo em Python

Etapa 2

Gere entradas amostrando dessas distribuições

 

Amostre valores aleatórios de $x$ e $y$ uniformemente entre -1 e 1:

for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
Simulações de Monte Carlo em Python

Etapa 3

Faça o cálculo determinístico das entradas simuladas

Verifique se cada ponto está dentro do círculo: determinístico para um dado $x$ e $y$

dist_from_origin = x**2 + y**2

Se sim, adicione o ponto a circle_points; sempre adicione o ponto a square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Simulações de Monte Carlo em Python

Etapa 4

Resuma os resultados para responder às questões de interesse

 

Após muitas simulações, calcule o valor de pi!

pi = 4 * circle_points/ square_points
Simulações de Monte Carlo em Python

Juntando tudo

n = 4000000
circle_points = 0 
square_points = 0

for i in range(n): x = random.uniform(-1, 1) y = random.uniform(-1, 1) dist_from_origin = x**2 + y**2 if dist_from_origin <= 1: circle_points += 1 square_point += 1
pi = 4 * circle_points / square_points print(pi)
3.142518
Simulações de Monte Carlo em Python

Vamos praticar!

Simulações de Monte Carlo em Python

Preparing Video For Download...