首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pi的估计值

Pi的估计值
EN

Stack Overflow用户
提问于 2018-10-17 05:41:14
回答 3查看 110关注 0票数 1

我试图通过检查一对随机变量在圆内的频率来估计pi的值。

我将绘制更多的随机数(1,000,000或更多),并计算圆周内点的分数乘以盒子的面积。

盒子的面积是2x2=4,如果是x^2+y^2≤1,那么一对就在圆圈内或圆圈上。

首先,如何绘制一个圆x^2 + y^2 =1?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-17 16:31:25

以下是如何使用rand方法计算π的三个示例。前两个使用生成器,而最后一个是普通循环。请注意,我避免创建数组,以避免内存分配。

代码语言:javascript
复制
pisum1(N) = count(true for _ in 1:N if rand()^2 + rand()^2 <= 1) * 4/N

pisum2(N) = count(rand()^2 + rand()^2 <= 1 for _ in 1:N) * 4/N

function pisum3(N)
    s = 0
    for _ in 1:N
        s += (rand()^2 + rand()^2 <= 1)
    end
    return 4s/N
end

让我们测试一下它们有多快:

代码语言:javascript
复制
julia> using BenchmarkTools

julia> N = 10^7
10000000

julia> @btime pisum1($N)
  105.221 ms (0 allocations: 0 bytes)
3.1410964

julia> @btime pisum2($N)
  81.046 ms (0 allocations: 0 bytes)
3.1416524

julia> @btime pisum3($N)
  34.942 ms (0 allocations: 0 bytes)
3.141756

如果你想要性能,你应该使用直线循环。

票数 0
EN

Stack Overflow用户

发布于 2018-10-17 14:21:45

使用Plots.jl可以在一条直线上绘制一个圆

代码语言:javascript
复制
using Plots
gr()

plot(cos, sin, 0, 2pi, line=4, leg=false, fill=(0,:orange), aspect_ratio=1)

这将绘制0到2pi之间的cossin分量(x和y坐标),然后填充曲线之间的区域。固定纵横比可确保圆看起来像一个圆。这是结果图:

感谢DNF指出了一个简单的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2018-10-17 12:03:08

如果你只想估计pi,你不需要绘制任何东西。生成一个n乘2的矩阵,每个元素都是法线。然后,您可以遍历各行,查看平方和是否小于1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52844412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档