Python으로 배우는 Monte Carlo 시뮬레이션
Izzy Weber
Curriculum Manager, DataCamp
입력 변수를 정의하고 그에 맞는 확률분포를 선택합니다
해당 분포에서 샘플링하여 입력을 생성합니다
시뮬레이션된 입력으로 결정적 계산을 수행합니다
결과를 요약합니다
무작위 점 $(x, y)$을 생성합니다. $x$, $y$는 -1에서 1 사이입니다.

$$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}}$$
입력 변수를 정의하고 확률분포를 선택합니다
circle_points = 0
square_points = 0
이 분포에서 샘플링하여 입력을 생성합니다
-1에서 1 사이의 균등분포에서 무작위 $x$, $y$ 좌표 값을 샘플링합니다:
for i in range(n):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
시뮬레이션된 입력에 대한 결정적 계산 수행
각 점이 원 안에 있는지 확인: 주어진 $x$, $y$에 대해 결정적임
dist_from_origin = x**2 + y**2
예이면 circle_points에 추가; square_points에는 항상 추가
if dist_from_origin <= 1:
circle_points += 1
square_points += 1
관심 있는 질문에 답하기 위해 결과 요약
많은 회차의 시뮬레이션 후, 원주율 값을 계산합니다!
pi = 4 * circle_points/ square_points
n = 4000000 circle_points = 0 square_points = 0for 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 += 1pi = 4 * circle_points / square_points print(pi)
3.142518
Python으로 배우는 Monte Carlo 시뮬레이션