采用几何图形概率解析及编程计算圆周率π的近似值

已知:圆的面积公式 S圆=πr2S_圆 = \pi r^2S=πr2,正方形的面积公式 : S正=边长2S_正 = 边长^2S=2
假设取两个随机数 x, y,且 x, y ∈ [0, 1),以(x, y)为坐标的点P则在正方形内。如图:
在这里插入图片描述
x2+y2<1\sqrt{x^2+y^2}<1x2+y2<1,表示点P到圆心的距离小于1,则点P落在圆内(90。90^。90扇形内)。此时正方形边长及圆的半径均等于1。
点P落在扇形内的概率为 p=扇形面积正方形面积=S扇S正=π41=π4p = \frac {扇形面积}{正方形面积} = \frac {S_扇}{S_正} = \frac { \frac {\pi}{4}}{1} = \frac {\pi}{4}p==SS=14π=4π
令生成一组随机数称为一次实验,实验m次,有n次点P落在扇形内,落在扇形内的概率为 p=nmp= \frac nmp=mn。若实验次数足够多,则 nm=π4\frac nm = \frac {\pi}{4}mn=4π,即 π=4nm\pi = \frac {4n}{m}π=m4n。下面基于这个结论写代码做实验。

先看实验结果,从运行结果可以看出实验次数越多,πππ值模拟越精确(π=3.141592653589793\color{#F00}{π = 3.141592653589793}π=3.141592653589793

实验100次,PI=3.0
实验1000次,PI=3.136
实验10000次,PI=3.142
实验100000(10)次,PI=3.14472
实验1000000(100)次,PI=3.141712
实验10000000(1000)次,PI=3.142624
实验100000000(1亿)次,PI=3.14177952
实验1000000000(10亿)次,PI=3.141677952
实验10000000000(100亿)次,PI=3.141618676
实验100000000000(1000亿)次,PI=3.141588773

源代码如下

	public static void calculatePI() {
        double x;
        double y;
        long count = 0;//实验总次数
        long circle = 0;//点落在圆内的次数
        while (count < Math.pow(10, 15)) {//实验次数控制在10^15内
            x = Math.random();//随机生成横坐标值 x ∈ [0,1)
            y = Math.random();//随机生成纵坐标值 y ∈ [0,1)
            count++;//实验次数+1
            //如果根号下x^2 + y^2 < 1,则表示该点到圆心的距离小于1,则点在圆内
            if (Math.sqrt(x * x + y * y) < 1) {
                circle++;
            }
            boolean isPowOfTen = Math.log10(count) % 1 == 0;//判断实验次数是否为10的n次方
            if (count >= 100 && isPowOfTen) {//如果实验次数>=100,且为10的n次方,输出实验结果
                System.out.println("实验" + count + "次,PI=" + (4.0 * circle / count));
            }
        }
    }

有兴趣的小伙伴可以试试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值