python标准模块--random模块

python提供random模块,使用该模块可以生成伪随机数,或根据给定的序列数据进行随机抽取

常用函数

函数 描述 范围
seed() 指定种子来初始化伪随机数生成器 -
random() 生成一个的随机浮点数 [0.0,1.0)
uniform(x,y) 生成一个在指定范围内的随机浮点数 [x,y]
randint(x,y) 生成一个指定范围内的随机浮点数 [x,y]
randrange(x,y,step) 指定范围内,按照step递增数据,并从里面抽取一个数据 [x,y)
choice(seq) 从序列seq中抽取一个数据 -
shuffle(seq) 将序列seq中随机排列(改变原序列) -

常用函数使用举例

在这里插入图片描述

应用小例—使用蒙特卡罗方法计算圆周率

思路来源:中国大学MOOC嵩天老师的课程

简介

关于蒙特卡罗方法,笔者引用百科对其的定义:使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,想要了解更多请点击:百度百科—蒙特卡罗方法

过程介绍

在这里插入图片描述

假设我们现在知道圆面积的计算公式,但是不知道圆周率的值,这时有一个边长为1的正方形,有一个¼圆与其内接,我们向正方形中抛点,每个点的落点位置随机,如果抛出的点足够多,那么落在¼圆中的点数x与抛出的总点数y之比就等于¼圆与正方形的面积之比

import random
import math

total_num=1000*1000		# 总点数
circle_num=0	# 落在圆中的点数
for i in range(total_num):
    x,y=random.random(),random.random()		# 生成坐标用来表示点的位置
    dist=math.sqrt(x**2+y**2)		# 计算点与原点O的距离以确定点是否在圆内
    if dist<=1.0:
        circle_num+=1		# 计算出圆内点数
pii=4*(circle_num/total_num)	# 根据已知中的等式关系得出计算式
print(f'您得出的圆周率为:{pii}')
print('您的圆周率准确度大约为:{:.6f}'.format(pii/math.pi))	# 我们取math模块中的pi作为标准来查看得出的结果的准确度

运行结果
在这里插入图片描述

实际上总的点数越多,精准确度越高,读者可以自行尝试

猜你喜欢

转载自blog.csdn.net/m0_54510474/article/details/121324023