蒙特卡洛求PI(抛点法)JavaScript实现

Point

export class Point{
    x = 0;
    y = 0;
    constructor(x,y) {
        this.x = x;
        this.y = y;
    }
    getDistance(other) {
        let xDis = Math.abs(this.x - other.x);
        let yDis = Math.abs(this.y - other.y);
        return Math.sqrt(xDis*xDis + yDis*yDis);
        
    }
}

let point = new Point(1,1)
let point2 = new Point(0,0)
console.log(point.getDistance(point2));

Circle

import { Point } from "./point.js";

class Circle{
    radius = 0;
    point = null;
    constructor(point, radius) {
        this.radius = radius;
        this.point = point;
    }
    isInCircle(point){
        let dis = this.point.getDistance(point)
        return dis <= this.radius;
    }
}

let point = new Point(1,1)
let circle = new Circle(point, 1);
// let point2 = new Point(2,2)
// console.log(circle.isInCircle(point2));
// let point3 = new Point(1.5, 1.5)
// console.log(circle.isInCircle(point3));
let total = 10000000;
let count = 0;
for(let i = 0; i < total; i++){
    let x = Math.random() * 2;
    let y = Math.random() * 2;
    let pointTmp = new Point(x,y);
    if(circle.isInCircle(pointTmp)){
        count++;
    }
}

console.log(count*4.0/total);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值