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
相关推荐
coleak2 分钟前
Flask代码审计实战
后端·python·web安全·flask
小小爬虾1 小时前
解决python写入csv时如000111样式的字符串前面的0被忽略掉的问题
开发语言·python
网络风云1 小时前
golang命令大全10--命令扩展与实践
开发语言·后端·golang
李白同学1 小时前
【C语言】指针详细解读1
c语言·开发语言
牛马baby1 小时前
Java高频面试之SE-17
java·开发语言·面试
c-c-developer2 小时前
C++ Primer 多维数组
开发语言·c++
随机惯性粒子群2 小时前
C++ 入门速通-第4章【黑马】
开发语言·c++
一ge科研小菜鸡3 小时前
云原生后端架构与实践:从微服务到Serverless
后端
kirito学长-Java4 小时前
Java牙科诊所管理系统web医院病例挂号预约平台springboot/ssm代码编写
java·开发语言·spring boot
Evand J6 小时前
课题推荐——基于自适应滤波技术的多传感器融合在无人机组合导航中的应用研究
开发语言·算法·matlab·无人机