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
相关推荐
叫我阿呆就好了12 分钟前
C 实现植物大战僵尸(四)
c语言·开发语言
xianwu5431 小时前
cpp编译链接等
linux·开发语言·网络·c++·git
懒大王爱吃狼1 小时前
Python基于wordcloud库绘制词云图
开发语言·python·学习·python基础·python学习
.生产的驴1 小时前
Elasticsearch 操作文档对数据的增删改查操作 索引库文档 操作数据 CRUD
大数据·运维·后端·elasticsearch·搜索引擎·全文检索·jenkins
wjs20241 小时前
Ruby 中文编码
开发语言
山语山2 小时前
C#多线程精解
开发语言·数据库·后端·c#
froginwe112 小时前
SQLite AND/OR 运算符
开发语言
.生产的驴2 小时前
Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查
大数据·spring boot·后端·elasticsearch·搜索引擎·spring cloud·全文检索
我是唐青枫2 小时前
C# Lambda 表达式详解
开发语言·c#·.net
CharlesC++2 小时前
JAVA类和对象练习
java·开发语言