没错,你没有看错!求圆周率从古至今有许多五花八门的方法,其中主要有7类方法:割圆术、分析法、沙-波法、椭圆积分法、概率法等。而我们要用python中的turtle实现的,是概率法。
我们只需要在方中圆中随机打点,根据点的数量得出圆和方的大致面积,再用公式求出圆的大致周长和正方形的边长(也就是圆的直径),最后求出大致圆周率。
import turtle as t
import random
t2=t.Turtle()
t.speed(0)
t.penup()
t.goto(x=-200,y=200)
t.pendown()
for i in range(4):
t.forward(400)
t.right(90)
t.penup()
t.goto(x=0,y=-200)
t.pendown()
t.circle(200)
m=0
n=0
t2.penup()
t2.goto(x=-65,y=-300)
t2.pendown()
t.hideturtle()
t2.hideturtle()
while True:
a=random.randint(-200,200)
b=random.randint(-200,200)
t.penup()
t.goto(x=a,y=b)
t.pendown()
if t.distance(x=0,y=0)>200:
t.dot(4.5,"black")
else:
t.dot(4.5,"purple")
n+=1
m+=1
t2.clear()
t2.write(round(n/m*4,7),font='微软雅黑')
if round(n/m*4,7)==3.1415926:
break
最终得出的图像上,圆内的点将被标识为紫色,圆外的将被标识为黑色。
(因截图原因,下面的圆周率没有显示,见谅!(你们自己试试))