본문 바로가기
Study

Monte Carlo simulation

by wycho 2020. 6. 17.

 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 : 정사각형 넓이)

 

[ π from Monte Carol simulation ]

간단히 말해서, 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

- https://en.wikipedia.org/wiki/Monte_Carlo_method

http://codingdojang.com/scode/507

'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

댓글