JAVA 蒙特卡洛求圆周率

qq_44796356 2019-04-18 04:19:29
该怎么写,初学者 没有一点思路。。。
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_44796356 2019-04-18
  • 打赏
  • 举报
回复 1
引用 3 楼 哦呼的回复:
😂它自动这样的 没注意。。
qps2009 2019-04-18
  • 打赏
  • 举报
回复
import java.util.Random;
import java.util.Scanner;

public class Test {

    static class Point{
        private double x;
        private double y;
        public Point(double x,double y){
            this.x=x;
            this.y=y;
        }

        public double getX() {
            return x;
        }

        public double getY() {
            return y;
        }

        public void setX(double x) {
            this.x = x;
        }

        public void setY(double y) {
            this.y = y;
        }

        public double getDistance(Point p){
            return Math.sqrt((this.x-p.getX())*(this.x-p.getX())+(this.y-p.getY())*(this.y-p.getY()));
        }
    }

    public static double getPI(long seed,int n){
        int count=0;
        Random random = new Random();
        random.setSeed(seed);
        for(int i=0;i<n;i++){
            double x=random.nextDouble()*(1.0 +1.0) -1.0;
            double y=random.nextDouble()*(1.0 +1.0) -1.0;
            Point p = new Point(x,y);
            if(p.getDistance(new Point(0,0))<=1){
                count++;
            }
        }
        double b = ((double)count)/n;
        return (4*1*b)/1;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入随机种子:");
        long seed = sc.nextLong();
        System.out.println("请输入投入的点数:");
        int n = sc.nextInt();
        System.out.println("PI="+getPI(seed,n));
    }
}
运行结果
请输入随机种子:
2
请输入投入的点数:
100000
PI=3.14684
qq_44796356 2019-04-18
  • 打赏
  • 举报
回复
没人吗。。。。。。。。。。。。。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧