Python 伪随机数:random库的使用

简介: Python 伪随机数:random库。常用函数:seed,random,randint,getrandbits,randrange,uniform,choice,shuffle,sample。用random库计算圆周率值:蒙特卡罗(Monte Carlo)方法。
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 伪随机数:random库的使用

随机数在计算机应用中十分常见,Python内置的random库主要用于产生各种分布的伪随机数序列。random库采用梅森旋转算法(Mersenne twister)生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。

1.常用函数

使用 random库主要目的是生成随机数,因此,只需要查阅该库的随机数生成函数,找到符合使用场景的函数使用即可。这个库提供了不同类型的随机数函数,所有函数都是基于最基本的 random.random()函数扩展而来。

random库中的常用函数如下:

函数 描述
seed(a=None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.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个元素,以列表类型返回
生成随机数之前可以通过 seed()函数指定随机数种子,随机种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同。这种情况便于测试和同步数据。

2.random库应用: $\pi$ 的计算

$\pi$(圆周率)是一个无理数,即无限不循环小数。精确求解圆周率$\pi$是几何学、物理学和很多工程学科的关键。

对$\pi$的精确求解曾经是数学历史上一直难以解决的问题之一,因为$\pi$无法用任何精确公式表示,在电子计算机出现以前,$\pi$只能通过一些近似公式的求解得到,直到1948年,人类才以人工计算方式得到$\pi$的808位精确小数。

随着计算机的出现,数学家找到了另类求解π的另类方法:蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法。当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。

应用蒙特卡罗方法求解$\pi$的基本步骤如下:

  • 随机向单位正方形和圆结构,抛洒大量“飞镖”点
  • 计算每个点到圆心的距离从而判断该点在圆内或者圆外
  • 用圆内的点数除以总点数就是$\pi$/4值。

随机点数量越大,越充分覆盖整个图形,计算得到的$\pi$值越精确。实际上,这个方法的思想是利用离散点值表示图形的面积,通过面积比例来求解$\pi$值。

用random库计算圆周率
利用 蒙特卡罗(Monte Carlo)方法 计算圆周率 $\pi$ 的值:

import random

dot = 0
dots = int(input('请输入要抛洒的飞镖数:'))

for i in range(dots):
    x, y = random.random(), random.random()
    r = (x**2 + y**2)**0.5
    if r <= 1:
        dot += 1
pi = 4 * (dot / dots)
print(f'所得圆周率为:{pi}')
随着抛洒飞镖的数量的增加,计算出的圆周率值也更加精确。
目录
相关文章
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
3月前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
3月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
198 4
数据分析的 10 个最佳 Python 库
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
226 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
3月前
|
XML 存储 数据库
Python中的xmltodict库
xmltodict是Python中用于处理XML数据的强大库,可将XML数据与Python字典相互转换,适用于Web服务、配置文件读取及数据转换等场景。通过`parse`和`unparse`函数,轻松实现XML与字典间的转换,支持复杂结构和属性处理,并能有效管理错误。此外,还提供了实战案例,展示如何从XML配置文件中读取数据库连接信息并使用。
Python中的xmltodict库
|
3月前
|
存储 人工智能 搜索推荐
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
Memoripy 是一个 Python 库,用于管理 AI 应用中的上下文感知记忆,支持短期和长期存储,兼容 OpenAI 和 Ollama API。
178 6
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库

热门文章

最新文章

推荐镜像

更多