gpt4 book ai didi

random - 在 Julia 中使用 Sobol 序列计算圆周率

转载 作者:行者123 更新时间:2023-12-04 14:55:06 30 4
gpt4 key购买 nike

可以通过查看带有圆圈的正方形上随机生成的点之间的关系来近似 pi。

enter image description here

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

最佳答案

参见 README.md Sobol.jl 以了解如何迭代 SobolSeq。要点是,对于 n 维序列,我们可以使用 next!(s) 获取接下来的 n 个元素。

julia> using Sobol

julia> s = SobolSeq(2)
2-dimensional Sobol sequence on [0,1]^2

julia> N = 10_000_000
10000000

julia> 4 * count(hypot(next!(s)...) < 1 for _ in 1:N) / N
3.1415952

关于random - 在 Julia 中使用 Sobol 序列计算圆周率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68211689/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com