golang点类圆类求pi值

go 复制代码
package Shape

import "math"

type Point struct{
	X float64
	Y float64
}

func (point *Point)GetDistance(other *Point) float64{
	return  math.Sqrt(math.Pow((point.X-other.X),2)+math.Pow((point.Y-other.Y),2))
}
go 复制代码
package Circle

import "awesomeProject/Shape"

type Circle struct {
	Heart  Shape.Point
	Radius float64
}

func (circle *Circle)IsPointInCircle(point *Shape.Point) bool{
	return  circle.Heart.GetDistance(point) <= circle.Radius
}
go 复制代码
package main

import (
	"awesomeProject/Circle"
	"awesomeProject/Shape"
	"fmt"
	"math/rand"
	"time"
)

const total = 1000000
func main() {
	point := Shape.Point{1, 1}
	circle := Circle.Circle{point, 1}
	rand.Seed(time.Now().UnixNano())

	count := 0
	for i := 0; i < total;i++{
		x := rand.Float64()*2
		y := rand.Float64()*2
		pointTmp := Shape.Point{x, y}
		if(circle.IsPointInCircle(&pointTmp)){
			count++
		}
	}
	fmt.Println(float64(count * 4.0) / total)
}

go.mod

复制代码
module awesomeProject

go 1.12
相关推荐
ServBay2 分钟前
AI 工程师必备的 9 个 Python 库,从数据验证到模型优化
后端·python·ai编程
Python私教5 分钟前
软件开发报价差 3 倍,真正的工程冲突不在价格
后端·架构
kisshyshy15 分钟前
掘金同款社区数据库设计:9张表带你吃透建表、索引与约束
后端·sql·markdown
元界metalite20 分钟前
SpringBoot项目Maven-BOM统一版本就不会冲突吗
后端
蓝宝石Kaze23 分钟前
Gin 框架快速上手
后端
TechLee30 分钟前
跨语言加解密总对不上?这个纯 Go 神库让 AES/RSA 与 PHP、Java 100% 互通
java·后端·算法
用户5944041035638 分钟前
从零手写轻量级 RPC 框架:基于 Netty + Zookeeper 的核心实现
后端
九九落40 分钟前
JavaScript 实现北京时间精确到毫秒显示:UTC+8、Asia/Shanghai 与在线时间校准详解
开发语言·javascript·ecmascript
东华万里1 小时前
第41篇 C++类与对象核心知识梳理:从底层原理到面试实战
开发语言·c++·大学生专区
路多辛1 小时前
全能型 Agent covo-agent v0.0.7 发布:TUI 新增 LLM 内联自动补全
golang