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
相关推荐
十月南城2 分钟前
SQL性能的三要素——索引、执行计划与数据分布的协同影响
后端·程序员
Lear4 分钟前
SpringBoot导出PDF终极解决方案实战!
后端
Dwzun5 分钟前
基于SpringBoot+Vue的体重管理系统【附源码+文档+部署视频+讲解)
vue.js·spring boot·后端
兔子撩架构7 分钟前
Dubbo 的同步服务调用
java·后端·spring cloud
PfCoder7 分钟前
WinForm真入门(20)——StatusStrip控件解析
开发语言·windows·c#·winform·statusstrip
技术不打烊8 分钟前
10 分钟搞懂 Go 并发:Goroutine vs Thread,一看就会用
后端
灵犀坠17 分钟前
前端面试八股复习心得
开发语言·前端·javascript
r***113323 分钟前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
u***457529 分钟前
SpringBoot Maven 项目 pom 中的 plugin 插件用法整理
spring boot·后端·maven
代码游侠32 分钟前
学习笔记——数据结构学习
linux·开发语言·数据结构·笔记·学习