正方形內部有一個內切圓,則正方形和內切圓的面積之比為:(2r)^2/Πr^2 = 4/Π
因此,圓周率的計算問題轉化為計算正方形的面積和其內切圓的面積的問題。
方法
基本思路
結果
以下分別為枚舉點1000,10000,100000,10000000的結果。
代碼與效果
import randomimport mathimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib.patches import Circlen = 1000cnt = 0r = 1.0a,b = 0.0,0.0fig = plt.figure(figsize = (12,12))ax = fig.add_subplot(1,1,1)while n > 0: n = n - 1 x = random.uniform(-1,1) y = random.uniform(-1,1) plt.scatter(x,y,marker='.',s = 10,alpha = 0.5) if pow(x,2) + pow(y,2) <= 1: cnt= cnt + 1circle = Circle(xy = (a,b),radius = r, alpha = 0.5 ,fill=False,edgecolor='r')rectangle = plt.Rectangle((-1,-1),2,2,fill=False,edgecolor='black', linewidth=2)ax.add_patch(circle)ax.add_patch(rectangle)plt.grid()pi = 4 * cnt / 1000print("pi=" + str(pi))每天半小時,Python再也不是從入門到放棄啦!