확률적으로 원주율π를 추정했다
(읽기 예상 시간: 4분)
생각
xy 좌표를 생각해 주세요.
여기서 원점 O를 중심으로 반지름 r의 원(C로 설정)과 모서리 길이가 2r인 사각형(S로 설정)을 그립니다.
S에서는 랜덤 타점(dot)을 날렸다.
S에서 빈 점을 찍을 때 "S에서 어떤 점의 수량: C에서 어떤 점의 수량≈S의 면적: C의 면적"이라고 할 수 있다.
S의 점 수는 "s dot num", C의 점 수는 "c dot num"으로 설정합니다.
(c_dot_num)/(s_dot_num)
=C 면적/S 면적
= (π*r의 제곱)/(2r)의 제곱
= π/4
그러므로
π = 4 * (c_dot_num)/(s_dot_num)
라는 정의를 내렸다.
그리고dot_num 및 sdot_num을 각각 구할 수 있다면π의 값을 추측할 수 있다.
(r의 값은 상관이 없는 것 같다)
코드
이번에는 파이톤으로 썼어요.
estimate_pi.py# 一辺の長さが1の正方形内にランダムにドットを打ち、円周率を推定する。
import random
def estimate_pi(n):
c_dot_num = 0
s_dot_num = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = x**2 + y**2
if distance <= 1:
c_dot_num += 1
s_dot_num += 1
pi = 4 * c_dot_num / s_dot_num
return pi
if __name__ == '__main__':
print('dotが100個のとき、円周率は{}'.format(estimate_pi(100)))
print('dotが1000個のとき、円周率は{}'.format(estimate_pi(1000)))
print('dotが10000個のとき、円周率は{}'.format(estimate_pi(10000)))
print('dotが100000個のとき、円周率は{}'.format(estimate_pi(100000)))
※ 이미지
실행 결과
처음
두번째
세번째
대략 3.141 전후입니다.
시험 횟수 n(=dot의 타수)이 증가함에 따라 정밀도도 높아졌다.
총결산
이번에 우리는 랜덤수로 원주율을 추산한다.
학술적으로 무작위 수로 어떤 값을 평가하는 방법을'몬테카로법'이라고 부른다.
코드 자체가 어렵지는 않지만, 처음 알았을 때 "이런 방법이 있나!"감정이 고조돼서 비망록으로
Reference
이 문제에 관하여(확률적으로 원주율π를 추정했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shige_13_/items/9c48038cbd722101f06d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 파이톤으로 썼어요.
estimate_pi.py
# 一辺の長さが1の正方形内にランダムにドットを打ち、円周率を推定する。
import random
def estimate_pi(n):
c_dot_num = 0
s_dot_num = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = x**2 + y**2
if distance <= 1:
c_dot_num += 1
s_dot_num += 1
pi = 4 * c_dot_num / s_dot_num
return pi
if __name__ == '__main__':
print('dotが100個のとき、円周率は{}'.format(estimate_pi(100)))
print('dotが1000個のとき、円周率は{}'.format(estimate_pi(1000)))
print('dotが10000個のとき、円周率は{}'.format(estimate_pi(10000)))
print('dotが100000個のとき、円周率は{}'.format(estimate_pi(100000)))
※ 이미지실행 결과
처음
두번째
세번째
대략 3.141 전후입니다.
시험 횟수 n(=dot의 타수)이 증가함에 따라 정밀도도 높아졌다.
총결산
이번에 우리는 랜덤수로 원주율을 추산한다.
학술적으로 무작위 수로 어떤 값을 평가하는 방법을'몬테카로법'이라고 부른다.
코드 자체가 어렵지는 않지만, 처음 알았을 때 "이런 방법이 있나!"감정이 고조돼서 비망록으로
Reference
이 문제에 관하여(확률적으로 원주율π를 추정했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shige_13_/items/9c48038cbd722101f06d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에 우리는 랜덤수로 원주율을 추산한다.
학술적으로 무작위 수로 어떤 값을 평가하는 방법을'몬테카로법'이라고 부른다.
코드 자체가 어렵지는 않지만, 처음 알았을 때 "이런 방법이 있나!"감정이 고조돼서 비망록으로
Reference
이 문제에 관하여(확률적으로 원주율π를 추정했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shige_13_/items/9c48038cbd722101f06d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)