Wikipedia에서 말하는 Monte Carlo method는 '숫자 결과를 얻기 위해 반복적인 무작위 샘플링에 의존하는 광범위한 연산 알고리즘' (Monte Carlo methods are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results.) 이라고 하며, analytically solution을 얻을 수 없을 때 사용한다.
대표적이면서 간단한 예제를 보면 감을 얻을 수 있다. 목적은 원의 넓이를 구하여 π값을 계산하는 것이다.
1) Random sampling을 통해 (x, y) 좌표를 얻는다.
2) (x, y) 좌료를 통해 point를 찍는다.
3) 원 방정식 안에 들어오는 point를 count한다.
4) 전체 포인트에서 count 된 비율은 π값에 가깝게 나온다. (c=πr^2 : 원의 넓이, s= (2r)^2 : 정사각형 넓이)
간단히 말해서, Monte Carlo simulation이란 ramdom 값을 생성하여 원하는 값만을 취하는 방법이다.
CODE : Monte Carlo simulation
더보기
import numpy as np
import matplotlib.pyplot as plt
s = 3000
xs = np.random.random_sample(s)*2-1
ys = np.random.random_sample(s)*2-1
c = 0
plt.figure(figsize=(5, 5))
for i in range(0, s):
x, y = xs[i], ys[i]
if x**2 + y**2 <=1:
c+=1
plt.scatter(x, y, c='blue', alpha=0.2)
else:
plt.scatter(x, y, c='red', alpha=0.2)
print(c/s*4)
plt.show()
Reference
'Study' 카테고리의 다른 글
Phasing (0) | 2020.06.17 |
---|---|
Random Walk (0) | 2020.06.17 |
PBWT (Positional Burrows-Wheeler Transform) (0) | 2020.06.09 |
Hilbert curve (0) | 2020.06.01 |
CNN terminology (0) | 2020.05.27 |
댓글