Python 随机 暴力破解 计算圆周率

Python 随机 暴力破解 计算圆周率,第1张

文章目录
      • 起因
      • 实践

起因

我是一名初二学生,最近做作业看到个题:

我国魏晋时期数学家刘徽原创“割圆术”计算圆周率。随着时代发展,现在人们依据频率估计概率这一原理,常用随机模拟的方法对圆周率PI进行估计。用计算机随机产生 m 个有序数对(x,y)(x、y是实数,且0<=x<=1,0<=y<=1),它们对应的点在平面直角坐标系中全部在某一个正方形的边界及其内部。如果统计出这些点中到原点的距离小于或等于1的点有 n 个,那么据此可估计PI的值为________。

答案是
4 n / m 4n/m 4n/m

实践

我觉得很神奇,所以用python实现了一下,代码烂,勿喷。

import numpy as np
import matplotlib.pyplot as plt
import math

plt.axis([0.0,1.0,0.0,1.0])
n = 0
m = 10000

for i in range(m):
    x = np.random.rand(1)
    y = np.random.rand(1)

    if math.sqrt(x*x+y*y) <= 1:
        plt.scatter(x,y,s=1,c='orange')
        n+=1
    else:
        plt.scatter(x,y,s=1,c='blue')

plt.show()

print("n="+str(n))
print("PI="+str(4*n/m))

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/743310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-29
下一篇 2022-04-29

发表评论

登录后才能评论

评论列表(0条)

保存