91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python實現蒙特卡羅方法

發布時間:2021-04-07 12:48:09 來源:億速云 閱讀:221 作者:小新 欄目:開發技術

小編給大家分享一下如何使用python實現蒙特卡羅方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

用python實現蒙特卡羅方法:

1.首先我們做一個簡單的圓周率的近似計算,在這個過程中我們要用到隨機數,因此需要先使用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 <= 1:
  count = count+1
PI = 4*count/total
print(PI)

3.在上面的程序中我們用8000000個隨機數進行投放,這樣得到的結果會更精確一些,運行程序需要一定的時間,最終得到的結果如下

如何使用python實現蒙特卡羅方法

4.下面我們進行一項簡單的應用,下圖為我在畫圖工具中隨便畫的一個圖,我們可以用蒙特卡羅方法來估算圖中黑色部分的面積。

如何使用python實現蒙特卡羅方法

5.上面的圖形是不規則的,我們只需知道在投放大量隨機數的情況下,隨機數在黑色部分出現的概率,再用總面積相乘即可估算黑色部分的面積。我們知道,黑色的rgb編碼為(0,0,0),所以需要統計rgb編碼為(0,0,0)時隨機數的投放概率即可。

6.代碼實現:

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實現蒙特卡羅方法

我們在上面的程序中采用了9000000個隨機數,可以看出兩個輸出結果相差并不大。

以上是“如何使用python實現蒙特卡羅方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芷江| 塘沽区| 蕲春县| 民丰县| 宾川县| 鲁山县| 桃源县| 团风县| 宜良县| 郴州市| 五原县| 淅川县| 阿勒泰市| 合江县| 岐山县| 卓资县| 杨浦区| 元阳县| 海林市| 淮北市| 嫩江县| 南漳县| 西华县| 洪江市| 本溪市| 房产| 浪卡子县| 浑源县| 拜城县| 吴忠市| 微博| 阜平县| 武威市| 垫江县| 苏尼特右旗| 玛纳斯县| 凤庆县| 南投市| 泰来县| 巴楚县| 儋州市|