몬테카로가 시뮬레이션한π의 평가

할 일
원과 무작위 수를 사용하는 시뮬레이션에서 고전적인 몬테카로 시뮬레이션 훈련의π로 제시되고 평가된다.
몬테카로 시뮬레이션
확률로 값을 평가하는 방법.추정이라고는 하지만 충분히 믿을 만한 값을 쉽게 만들 수 있기 때문에 몬테카로 방법의 유용성이 높다.현재도 금융상품의 리스크 계산과 통계학의 수치 계산 등에서 사용되고 있다.
π를 만드는 방법(조건/식)
0~1의 랜덤수를 바탕으로 0~1의 xy평면에 랜덤으로 점을 찍는다.원 안의 점의 수량 P와 전체의 점의 수량 N의 비는 원 S1과 평면 전체 S2의 면적비에 대응한다.

원 안에 랜덤으로 점을 찍는 모습을 볼 수 있다.그림의 단위 원은 1/4이기 때문에 면적비는 S1/S2 =π/4이다.원점 내의 점 체크는 원점과의 거리를 사용합니다.거리가 1 이하일 때 변수 p에 1을 추가합니다.원의 구역 x^2+y^2<=1을 통해 거리를 얻을 수 있습니다.프로그램 언어는 Python을 사용합니다.
코드
MCsim
import random
def main():
  sta,order=map(int,input("start order").split()) #何個の点を打つか決める。
  for order in range(order):
    N=sta*10**order #orderは指数
    p=0
    for n in range(N):
      x=make_r()
      y=make_r()
      if x**2+y**2<=1:
        p+=1
    pi=4*p/N
    print("pi=",pi,"N=",N)

#0以上1以下の乱数作り関数
def make_r():
  while True:
    r=(random.random())*2
    if r>1:
      continue
    else:
      break
  return r
  
if __name__=="__main__":
  main()
결실
결과는 다음 그림과 같습니다.

점의 수량이 증가함에 따라 pi(π)의 값에 가깝다.1000만 점을 쳤을 때π는 3.1409824로 바뀌었다.
평점
무작위로 1만 점을 넘긴 곳부터 소수점 2위까지 정밀도를 알 수 있다.1000만 점의 경우 소수점 3위까지 반올림은 일치한다.
고찰하다.
만약 충분한 견본점이 있다면, 몬테카로 시뮬레이션에서 충분한 정밀도를 가지고 값을 평가할 수 있다.랜덤수의 생성은 삽입식 함수에 의존하기 때문에 다음에도 랜덤수를 주의해야 한다.

좋은 웹페이지 즐겨찾기