This problem was asked by Google.
The area of a circle is defined as πr^2. Estimate π to 3 decimal places using a Monte Carlo method.
Hint: The basic equation of a circle is x2 + y2 = r2.
说实话,这个问题我曾经在19年面试Amazon applied scientist intern的时候问到过。
首先,什么是蒙特卡罗方法。
蒙特卡罗是基于重复随机取样获得数值结果的一种计算方法, 通过利用概率分布,例如均匀分布或正态分布,为任何具有不确定性的变量构建可能结果的模型。
import random
INTERVAL = 1000 # 设置的越大越准确,这里设置1000
circle_points = 0
square_points = 0
for i in range(INTERVAL**2):
rand_x = random.uniform(-1,1)
rand_y = random.uniform(-1,1)
origin_dist = rand_x**2 + rand_y**2
if origin_dist <= 1:
circle_points += 1
square_points += 1
pi = 4 * circle_points / square_points
print(pi)
参考文章
1 Amazon Blog