π的计算
随机向单位正方形和圆结构抛洒大量点,对于每个点,
可能在圆内或者圆外,当随机抛点数量达到一定程度,
圆内点将构成圆的面积,全部抛点将构成矩形面积。圆
内点数除以圆外点数就是面积之比,即π/4。随机点数
量越大,得到的π值越精确。
π计算问题的IPO表示如下:
输入:抛点的数量
处理:对于每个抛洒点,计算点到圆心的距离,通过
距离判断该点在圆内或是圆外。统计在圆内点的数量
输出:π值
代码:
from random import random
from math import sqrt
from time import clock
DARTS = 1200
hits = 0
clock()
for i in range(1,DARTS):
x, y = random(), random()
dist = sqrt(x**2 + y**2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi的值是 %s" % pi)
print("程序运行时间是 %-5.5ss" % clock())
用到了random、math、time三个库,三个库介绍如下:
random库是使用随机数的python的标准库;
math库
包含的函数有: 圆周率pi 、 自然常数e (15位小数) ;
ceil(x) : 对浮点数向上取整
floor(x) : 对浮点数向下取整
pow(x, y) 、 log(x)、 log10(x) 、 sqrt(x) 、 exp(x) 、 degrees(x) : 将弧度值转换成角度 ; radians(x) : 将角度值转换成弧度值; sin(x) 、cos(x)、tan(x)、asin(x)反正弦函数、acos(x)、atan(x)
random库
随机函数库,生成随机数
seed(x) : 给随机数一个种子值,默认随机种子是系统时钟
random() : 生成一个[0, 1.0] 之间的随机小数
uniform(a, b) : 生成一个a到b之间的随机小数
randint(a, b): 生成一个a到b之间的随机整数
randrange(a, b, c): 随机生成一个从a开始到b以c递增的数
choice(<lsit>) : 从列表中随机返回一个元素
shuffle(<list>) : 将列表中的元素打乱
sample(<list>, k) : 从指定列表中随机获得k个元素
计算π值:(蒙特卡洛方法,利用随机试验)
time库:
https://blog.csdn.net/ZZh1301051836/article/details/79013744