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