>백엔드 개발 >파이썬 튜토리얼 >Python은 Monte Carlo 방법을 구현합니다(코드 예)

Python은 Monte Carlo 방법을 구현합니다(코드 예)

不言
不言앞으로
2019-01-14 11:29:026992검색

이 글의 내용은 몬테카를로 방식(코드 예제)을 파이썬으로 구현한 내용입니다. 참고할 만한 가치가 있으니 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다.

몬테카를로법은 폰 노이만(Von Neumann)과 울람(Ulam)이 제안한 통계적 시뮬레이션 방법으로, 확률 추정 결과를 바탕으로 다수의 난수를 바탕으로 무작위 데이터가 많을수록 더 정확한 결과를 얻을 수 있습니다. 아래에서는 Python을 사용하여 Monte Carlo 방법을 구현해 보겠습니다.

1. 먼저 pi에 대한 간단한 대략적인 계산을 수행합니다. 이 과정에서는 난수를 사용해야 하므로 import numpy as np를 사용하여 먼저 numpy 라이브러리를 가져와야 합니다.

2. 코드 구현:

import numpy as np

total = 8000000
count = 0

for i in range(total):
    x = np.random.rand()
    y = np.random.rand()
    dis = (x**2+y**2)**0.5
    if dis <p>3 위 프로그램에서는 전달을 위해 8,000,000개의 난수를 사용하므로 프로그램을 실행하는 데 일정 시간이 걸리고 최종 결과가 나옵니다. </p><p><span class="img-wrap"> <img src="https://img.php.cn//upload/image/549/675/172/1547436392667253.png" title="1547436392667253.png" alt="Python은 Monte Carlo 방법을 구현합니다(코드 예)"></span></p><p>4. 아래 그림은 제가 그리기 도구에서 임의로 그린 그림으로, 검은색 부분의 면적을 추정해 볼 수 있습니다. 그림에서. </p><p   style="max-width:90%"><span class="img-wrap"><img src="https://img.php.cn//upload/image/583/174/740/1547436406520588.png" title="1547436406520588.png" alt="Python은 Monte Carlo 방법을 구현합니다(코드 예)"></span></p><p>5. 위 그래프는 불규칙합니다. 난수를 많이 넣었을 때 검은색 부분에 난수가 나타날 확률만 알면 됩니다. 그런 다음 전체 면적을 곱하여 검은색을 추정합니다. 부분. 검은색 RGB 코드가 (0,0,0)이라는 것을 알고 있으므로 RGB 코드가 (0,0,0)일 때 난수가 나올 확률을 계산해야 합니다. </p><p>6. 코드 구현: </p><pre class="brush:php;toolbar:false">from PIL import Image
import numpy as np

im = Image.open("C:/Users/21974/Desktop/handwrite2.PNG")
total = 9000000
count = 0
defin = 0
width = im.size[0]
height = im.size[1]

for i in range(total):    #用蒙特卡罗方法获得估计值
    x = np.random.randint(0, width-1)
    y = np.random.randint(0, height-1)
    k = im.getpixel((x, y))
    if k[0]+k[1]+k[2] == 0:
        count += 1
print(int(width*height*count/total))

for i in range(width):    #用遍历获得准确值
    for j in range(height):
        k = im.getpixel((i, j))
        if k[0] + k[1] + k[2] == 0:
            defin += 1
print(defin)

위 코드는 두 부분으로 나눌 수 있습니다. 첫 번째 for는 몬테카를로 방법으로 구한 면적의 추정값이고, 두 번째 for는 횡단하는 방법입니다. 모든 픽셀. 두 개의 출력을 얻은 후 얻은 영역의 정확한 값을 비교합니다.

Python은 Monte Carlo 방법을 구현합니다(코드 예)

위 프로그램에서는 9000000개의 난수를 사용했는데 두 출력 결과가 크게 다르지 않은 것을 볼 수 있습니다.

위 내용은 Python은 Monte Carlo 방법을 구현합니다(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제