计算圆周率。存在圆心在直角坐标系原点且半径为 1 的圆及其外切正方形。为计算方便,仅考虑位于第一象限的四分之一正方形和四分之一圆。随机生成该四分之一正方形中一系列点,散布于四分之一圆内比例即为圆周率四分之一。散步点越多,结果越精确,耗时也越长。
from random import random
from math import sqrt
N = eval(input("请输入次数:"))
K = 0
for i in range(1, N + 1):
x, y = random(), random()
dist = sqrt(x ** 2 + y ** 2)
if dist <= 1.0:
K = K + 1
pi = 4 * (K / N)
print("圆周率值:{}".format(pi))
random 库的介绍
random库是产生伪随机数的。其中函数分类有(21个)
import random
random.random() # 返回左闭右开的区间(0.0,1.0) 中的一个浮点数
# -random(n) 返回左闭右开的区间(0,n)的一个浮点数
random.randrange(n) # 返回给定区间里的一个随机整数
# -randrange(m, n)
# -randrange(m, n, x)
random.choice(s) # 从序列s里随机选择一个元素
其中该算法中所用的方法是基本随机函数: random.random()返回的是一个 0~1之间中随机的一个浮点数
math库的介绍
math库是python的标准库,提供了诸多的数学函数,可以使用整数和浮点数的数学运算
math库常用函数:
import math
math.sqrt() # 计算平方根,返回的数据为浮点型数据
math.pow(底数, 指数) # 计算一个数值的N次方
math.fabs() # 计算一个数的绝对值
math.pi # 圆周率
eval() 函数
eval()函数 可以转化字符串的类型 并且 执行一个字符串表达式,并返回表达式的值
test1 = "[1, 2, 3, 4]"
test2 = eval(test1)
# 输出结果 print(test1, type(test1)) ========> [1, 2, 3, 4] <class 'str'>
# - print(test2, type(test2)) ========> [1, 2, 3, 4] <class 'list'>
test3 = "{'a': 1, 'b': 2}"
test4 = eval(test3)
# 输出结果 print(test1, type(test1)) ========> {'a': 1, 'b': 2} <class 'str'>
# - print(test2, type(test2)) ========> {'a': 1, 'b': 2} <class 'dict'>
test5 = "30 * 9"
test6 = eval(test5)
# print(test1, type(test5)) ========> 30 * 9 <class 'str'>
# print(test2, type(test6)) ========> 270 <class 'int'>