• 浦丰投针法

1777 年法国科学家浦丰提出用随机投针法计算圆周率,见图 2.17 (a)。具体步骤为:①取
一张白纸,在上面画上许多条间距为 D 的平行线;②取一根长度为 L( L< D)的针,随机
地向画有平行直线的纸上掷 n 次,记录针与直线相交的次数,记为 m;③π= (2×针长÷线
距)× (试验次数÷相交次数)。若线距是针长的 2 倍,则π=试验次数÷相交次数。
普丰投针

import java.util.Random;

 class TestPF {
    double d,dd,width,high;
    TestPF(){width=100;high=100;dd=1;d=0.5;}
    double x,y,x1,y1,jd;
    void PF(int n){
        Random r=new Random();
        int count=0;
        for(int i=0;i<n;i++){
            jd=r.nextInt(360)+r.nextDouble();
            y=r.nextInt(99)+ r.nextDouble();
            y1=y+d*Math.sin(jd);
            if(Math.floor(y)!=Math.floor(y1)) count++;
        }
        System.out.println("投针"+n+"次,相交"+count+"次,PI="+n*1.0/count);
    }
}
 public class pai {
     public static void main(String[] args) {
         TestPF pf=new TestPF();
         pf.PF(2122);pf.PF(1000000);
     }
}
  • 随机掷点法

随机掷点法也是计算圆周率的经典方法,见图 2.17(b),边长为 1 的正方形面积为
1,其中的扇形面积则为 π
4
。向正方形中随机掷 n 个点( n 足够大),假设有 m 个点位于圆中,
则可将 n 和 m 分别视为正方形面积和圆形面积。故:圆面积÷正方形面积= (π /4)÷ 1= m÷
n。容易得出:π= 4× m÷ n。
随机掷点

public class pai1 {
    public static void main(String[] args) {
        System.out.println(rand_pi(100000));  //改变参数值
    }
    public static double rand_pi(int n) {
        int numInCircle = 0;
        double x, y;
        double pi;
        for (int i = 0; i < n; i++) {
            x = Math.random();
            y = Math.random();
            if (x * x + y * y < 1)
                numInCircle++;
        }
        pi = (4.0 * numInCircle) / n;
        return pi;
    }
}
Last modification:September 28th, 2021 at 04:23 pm
如果觉得我的文章对你有用,请随意赞赏