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
相关推荐
勇哥java实战分享5 小时前
程序员的明天:AI 时代下的行业观察与个人思考
后端
掘金码甲哥6 小时前
超性感的轻量级openclaw平替,我来给你打call
后端
用户8356290780519 小时前
无需 Office:Python 批量转换 PPT 为图片
后端·python
啊哈灵机一动9 小时前
使用golang搭建一个nes 模拟器
后端
间彧11 小时前
SpringBoot + ShardingSphere 读写分离实战指南
后端
砍材农夫11 小时前
订单超时
后端
树獭叔叔11 小时前
06-大模型如何"学习":从梯度下降到AdamW优化器
后端·aigc·openai
得鹿11 小时前
MySQL基础架构与存储引擎、索引、事务、锁、日志
后端
程序员飞哥11 小时前
Block科技公司裁员四千人,竟然是因为 AI ?
人工智能·后端·程序员
JavaEdge在掘金12 小时前
Claude Code 直连 Ollama / LM Studio:本地、云端开源模型都能跑
后端