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

解决node先console.log不能用

pnpm install -D tslib @types/node

tsconfig.json

{
  "compilerOptions": {
    "target": "es2020",
    "module": "commonjs",
    "lib": ["es2020"],
    "sourceMap": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "moduleResolution": "node",
    "baseUrl": "src",
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["dist", "node_modules"],
  "compileOnSave": false
}

Point

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

// let tpoint:TPoint = new TPoint(1,1)
// let tpoint2:TPoint = new TPoint(3,3)
// console.log(tpoint.getDistance(tpoint2));

Circle

import { TPoint } from "./tspoint";

class TCircle{
    radius: number = 0;
    point: TPoint;
    constructor(point: TPoint, radius: number) {
        this.radius = radius;
        this.point = point;
    }
    isInCircle(point: TPoint): boolean{
        let dis:number = this.point.getDistance(point)
        return dis <= this.radius;
    }
}

let point:TPoint = new TPoint(1,1)
let circle:TCircle = new TCircle(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:TPoint = new TPoint(x,y);
    if(circle.isInCircle(pointTmp)){
        count++;
    }
}

console.log(count*4.0/total);

相关推荐

  1. 蒙特卡洛PITypeScript实现

    2024-05-11 18:54:03       12 阅读
  2. 实验6-1 近似PI

    2024-05-11 18:54:03       10 阅读
  3. 蒙特卡洛模拟之逆变换

    2024-05-11 18:54:03       35 阅读
  4. 蒙特卡洛模拟之合成控制

    2024-05-11 18:54:03       30 阅读
  5. 蒙特卡洛模拟方法的 MATLAB 实现

    2024-05-11 18:54:03       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 18:54:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 18:54:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 18:54:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 18:54:03       20 阅读

热门阅读

  1. 第十周笔记

    2024-05-11 18:54:03       14 阅读
  2. WHAT - npm和npx

    2024-05-11 18:54:03       12 阅读
  3. 【LeetCode】每日一题:2960. 统计已测试设备

    2024-05-11 18:54:03       9 阅读
  4. 若依ruoyi-vue前端异常处理

    2024-05-11 18:54:03       8 阅读
  5. Rust - 终端输入、文件读写

    2024-05-11 18:54:03       11 阅读
  6. 【C++】n个一位数能够组成的最大数

    2024-05-11 18:54:03       7 阅读
  7. day 28 第七章 回溯算法

    2024-05-11 18:54:03       8 阅读