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
相关推荐
卷无止境16 分钟前
podman与docker的区别和生产环境最佳实践
后端
程途知微22 分钟前
ConcurrentHashMap线程安全实现原理全解析
java·后端
lzhdim22 分钟前
SharpCompress:跨平台的 C# 压缩与解压库
开发语言·c#
嘿嘿嘿x327 分钟前
Linux记录过程
linux·开发语言
Mars酱28 分钟前
1分钟编写贪吃蛇 | JSnake贪吃蛇单机版
java·后端·开源
卷卷说风控29 分钟前
养了10年风控,今年开始养「虾」了
后端
默 语35 分钟前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python
止观止36 分钟前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext
王码码203539 分钟前
Go语言中的Elasticsearch操作:olivere实战
后端·golang·go·接口
卷心菜狗1 小时前
Python进阶-深浅拷贝辨析
开发语言·python