通过观察正方形中随机生成的点与内部圆之间的关系,可以近似计算π。
function picircle(n)
n = n
N = 2n+1
x = range(-1, 1, length=N)
y = rand(N)
center = (0,0)
radius = 1
n_in_circle = 0
for i in 1:N
if norm((x[i], y[i]) .- center) < radius
n_in_circle += 1
end
end
println(4 * n_in_circle / N)
end
picircle(1000)
3.1424287856071964
然而,我想使用拟蒙特卡洛方法。我不想使用伪随机数,而是想使用Sobol序列中的数字。我知道如何生成它们,但不确定如何在我的代码中实现。
using Sobol
s = SobolSeq(2) # Creates a Sobol-Sequenz in 2 Dimensions