✨random库概述
⚽基本随机数函数
⚾扩展随机数函数
🎱圆周率的计算
🥇圆周率的近似计算公式
- code
pi = 0
N = 100
for k in range(N):
pi += 1 / pow(16, k) * (
4 / (8 * k + 1) - 2 / (8 * k + 4) -
1 / (8 * k + 5) - 1 / (8 * k + 6))
print("圆周率值是: {}".format(pi))
- 运行结果
🥇蒙特卡罗方法
蒙特卡罗方法也成统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。他的工作原理就是两件事:不断抽样、逐渐逼近。
pi = 4 * 落在圆内的概率 = 4 * (圆内点的数量 / 点的总数)
- code
from random import random
from time import perf_counter
DARTS = 1000 * 1000
hits = 0.0
start = perf_counter()
for i in range(1, DARTS + 1):
x, y = random(), random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits / DARTS)
print("圆周率值是: {}".format(pi))
print("运行时间是: {:.5f}s".format(perf_counter() - start))
- 运行结果
每次运行所得的结果会有所不同,但大致在3.14左右
🔮库函数总结
seed() //初始化随即及种子,默认值为当前系统时间
random() //生成一个[0,1.0)之间的随机小数
randint(a,b) //生成一个[a,b]之间的随机整数
getrandbits(k) //生成一个k比特长度的随机整数
randrange(start,stop[,step])//生成一个[start,stop)之间以step为步长的随机整数
uniform(a,b) //生成一个[a,b]之间的随机小数
choice(seq) //从序列类型,例如列表中随机返回一个元素
shuffle(seq) //将序列中的元素随机排列,返回打乱后的排列
sample(pop,k) //从pop类型中随机选取k个元素,以列表的形式返回