원주율 계산하기
이제 고전적인 예제인 원주율 \(\pi\) 추정을 해 보겠습니다.
변의 길이가 $2\(이고 원점 \)(0, 0)\(이 정중앙인 정사각형을 떠올려 보세요. 네 꼭짓점의 좌표는 \)(1, 1), (1, -1), (-1, 1), (-1, -1)$입니다. 이 정사각형의 넓이는 $2\times 2 = 4$입니다. 이제 반지름이 $1\(이고 중심이 원점인 원이 이 정사각형 안에 딱 맞게 들어가 있다고 합시다. 이 원의 넓이는 \)\pi \times \text{radius}^2 = \pi$가 됩니다.
$\pi$를 추정하려면, 이 정사각형 안에서 무작위로 여러 점을 뽑고 그중 원 안에 들어오는 점의 비율(\(x^2 + y^2 <= 1\))을 구합니다. 그러면 원의 넓이는 이 비율에 $4\(를 곱한 값이 되고, 이것이 \)\pi$의 추정값이 됩니다.
이 연습 문제를 마치면, 계산에 시뮬레이션을 활용하는 방법을 감 잡으실 수 있을 거예요.
이 연습은 강의의 일부입니다
Python으로 하는 통계 시뮬레이션
연습 안내
- 콘솔에서
np.pi로 $\pi$의 실제 값을 확인하세요.sims는 10000으로,circle_points는 0으로 초기화하세요. for반복문 안에서np.random.uniform()을 사용해 -1과 1 사이에서size=2인 점(즉, x와 y 좌표)을 생성하세요.- 점이 단위원 안에 있는지 $x^2 + y^2 <= 1$로 확인해
within_circle에 저장하고, 조건을 만족하면circle_points를 증가시키세요. - 원 안에 포함된 점의 비율에 4를 곱해
pi_sim으로 $\pi$의 추정값을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Initialize sims and circle_points
sims, circle_points = ____, ____
for i in range(sims):
# Generate the two coordinates of a point
point = ____
# if the point lies within the unit circle, increment counter
within_circle = point[0]**2 + point[1]**2 <= 1
if ____ == True:
circle_points +=1
# Estimate pi as 4 times the avg number of points in the circle.
pi_sim = ____
print("Simulated value of pi = {}".format(pi_sim))