3
我試圖通過使用Box-Muller變換對Marsarlia極座標法來測試從正態分佈生成數字的速度。據說Marsaglia極座標法被認爲比Box-Muller變換更快,因爲它不需要計算sin和cos。但是,當我用Python編寫這個代碼時,這是不正確的。有人可以驗證這一點,或向我解釋爲什麼會發生這種情況?從Python中的正態分佈生成數
def marsaglia_polar():
while True:
x = (random.random() * 2) - 1
y = (random.random() * 2) - 1
s = x * x + y * y
if s < 1:
t = math.sqrt((-2) * math.log(s)/s)
return x * t, y * t
def box_muller():
u1 = random.random()
u2 = random.random()
t = math.sqrt((-2) * math.log(u1))
v = 2 * math.pi * u2
return t * math.cos(v), t * math.sin(v)
沒有看到你的代碼!? – tzaman
我們可以,如果你告訴我們你的代碼 – inspectorG4dget
糟糕,添加!!!! – user2770287