Python是一種非常流行的編程語言,它的靈活性和易用性使得它被非常多的人使用。在Python中,有許多強大的庫和模塊可以讓我們輕松地完成各種任務(wù),其中最著名的之一就是蒙特卡羅模擬。
蒙特卡羅模擬是一種經(jīng)典的計算方法,它是通過在隨機生成的樣本中進行多次重復(fù)試驗來得出準(zhǔn)確的數(shù)值。在Python中,我們可以使用NumPy庫和Matplotlib庫來快速地實現(xiàn)蒙特卡羅模擬。
import numpy as np import matplotlib.pyplot as plt #定義投擲次數(shù) N = 500 #定義蒙特卡羅函數(shù) def monte_carlo_pi(n): num_inside = 0 #初始化圓內(nèi)部點的數(shù)目 for i in range(n): x, y = np.random.rand(2) * 2 - 1 #生成[-1,1]之間的隨機數(shù) if x ** 2 + y ** 2<= 1: num_inside += 1 return 4 * num_inside / n #進行N次重復(fù)試驗 pi_values = [monte_carlo_pi(N) for _ in range(N)] #繪制圖表 plt.hist(pi_values, bins=20) plt.title(f"N={N}") plt.show()
在這段代碼中,我們定義了一個名為monte_carlo_pi的函數(shù),該函數(shù)通過進行多次重復(fù)試驗來估計PI的值。我們在代碼中定義了一個常數(shù)N,表示進行投擲的次數(shù),該次數(shù)越大,結(jié)果越精確。
我們使用NumPy庫中的np.random.rand方法隨機生成點的位置,并將它們映射到[-1,1]之間。如果點在圓內(nèi)部,則將其計入到num_inside變量中。最后我們返回一個給定投擲次數(shù)下的估計PI的值。
在我們完成所有的投擲試驗之后,我們使用Matplotlib庫中的plt.hist方法繪制出結(jié)果。該圖表顯示了估計PI值的分布情況,使用直方圖的形式展示。從圖表中,我們可以看到,隨著投擲次數(shù)的增加,估計PI值的分布趨向于正態(tài)分布。