在SciPy中,可以使用scipy.stats
模塊中的隨機數生成函數來實現蒙特卡羅方法進行數值模擬。
以下是一個簡單的示例代碼,演示如何使用蒙特卡羅方法來估計圓的面積:
import numpy as np
import scipy.stats as stats
# 定義圓的半徑
radius = 1
# 生成隨機數
n = 100000
x = stats.uniform.rvs(loc=-radius, scale=2*radius, size=n)
y = stats.uniform.rvs(loc=-radius, scale=2*radius, size=n)
# 計算落在圓內的點的數量
inside_circle = (x**2 + y**2) <= radius**2
# 計算圓的面積的估計值
estimated_area = np.sum(inside_circle) / n * (2*radius)**2
print("Estimated area of the circle:", estimated_area)
在上面的代碼中,我們首先定義了一個圓的半徑,然后生成了n個在[-1,1]范圍內均勻分布的隨機數作為圓內的點的坐標。接著我們通過判斷這些點是否落在圓內來計算圓的面積的估計值。
通過這種方法,我們可以利用蒙特卡羅方法進行數值模擬,估計出復雜問題的數值解。SciPy中提供了豐富的統計函數和隨機數生成函數,可以方便地實現蒙特卡羅方法。