這個演算法是用來求解積分和一些運算的,主要就是通過概率模擬的方法,比如對於π或者積分
import random
def calpai():
n = 1000000
r = 1.0
a, b = (0.0, 0.0)
x_neg, x_pos = a - r, a + r
y_neg, y_pos = b - r, b + r
count = 0
for i in range(0, n):
x = random.uniform(x_neg, x_pos)
y = random.uniform(y_neg, y_pos)
if x*x + y*y <= 1.0:
count += 1
print (count / float(n)) * 4
這是求π。
def integral():
n = 1000000
x_min, x_max = 0.0, 1.0
y_min, y_max = 0.0, 1.0
count = 0
for i in range(0, n):
x = random.uniform(x_min, x_max)
y = random.uniform(y_min, y_max)
# x*x > y,表示該點位於曲線的下面。所求的積分值即為曲線下方的面積與正方形面積的比。
if x*x > y:
count += 1
integral_value = count / float(n)
print integral_value
蒙特卡洛方法
蒙特卡洛方法 monte carlo method,也有翻譯成 蒙特卡羅方法 是以概率和統計的理論 方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際...
蒙特卡洛方法 蒙特卡洛方法概率密度函式
簡介 為了更加清楚的讓同學們深刻的理解pbr裡面那些公式背後的東西,同學們務必先來擼一遍光線追蹤,畢竟我們這裡舉例的這些蒙特卡洛方法都是光線追蹤第三卷裡 ray tracing the rest of your life 的舉例,只不過可能對於有的同學來說,閱讀起來比較難,所以我們來更加詳盡的翻譯或...
蒙特卡洛理解
蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...