Python 随机漫步
目录
1. 创建 RandomWalk 类
2. 选择方向
3. 绘制随机漫步图
4. 总结
本篇博客将使用 Python 来 生成随机漫步数据,再使用 Matplotlib 库,将以引人注目的方式将这些数据呈现出来。
随机漫步 顾名思义就是随机走出的步伐,它是这样行走得到的路径:每次行走都是完全随机的、没有明确的方向,结果是由一系列随机决策决定的。我们可以将随机漫步看作是 蚂蚁在晕头转向 的情况下,每次都沿随机的方向前行所经过的路径。
1. 创建 RandomWalk 类
为模拟随机漫步,首先创建一个名为 RandomWalk 的类,其作用是 随机的选择前进方向。这个类需要三个属性:一个是 存储随机漫步次数的变量,其他两个是 列表,分别存储随机漫步经过的每个点的 x 坐标 和 y 坐标。
RandomWalk 类只包含两个方法:
- 方法 __init__ () ,初始化属性
- 方法 fill_walk () ,计算随机漫步经过的所有点
from random import choiceclass RandomWalk:'''一个生成随机漫步数据的类'''def __init__(self, num_points = 500):'''初始化随机漫步的属性'''self.num_points = num_points# 所有随机漫步都使于(0,0)self.x_values = [0]self.y_values = [0]
- 为做出 随机决策,将 所有可能的选择 都存储在一个列表中,并在每次决策时,都使用模块 random 中的 choice () 来决定使用哪种选择 。
- 将随机漫步包含的默认点数设置为 5000,这个数大到 足以生成有趣的模式,又小到可确保能够 快速地模拟随机漫步。
- 创建两个用于存储 x 值和 y 值的列表,并让每次漫步都从 点(0,0)出发。
2. 选择方向
我们将使用方法 fill_walk() 来生成 漫步包含的点,并 决定每次漫步的方向。
import randomdef fill_walk(self):'''计算随机漫步包含的所有点'''# 不断漫步,直到列表达到指定的长度while len(self.x_values) < self.num_points:# 决定前进方向以及沿这个方向前进的距离x_direction = random.choice([1,-1])x_distance = random.choice([0,1,2,3,4])x_step = x_direction * x_distancey_direction = random.choice([1,-1])y_distance = random.choice([0,1,2,3,4])y_step = y_direction * y_distance# 拒绝原地踏步if x_step == 0 and y_step == 0:continue# 计算下一个点的 x 值和 y 的值x = self.x_values[-1] + x_stepy = self.y_values[-1] + y_stepself.x_values.append(x)self.y_values.append(y)
- 先建立一个循环,它不断运行,直到漫步包含所需的点数。方法 fill_walk()的主要部分告诉 Python 如何模拟四种漫步决定:向右走还是向左走?沿指定的方向走多远?向上走还是向下走?沿指定的方向走多远?
- 使用 choice([-1,-1]) 给 x_direction 选择一个值,结果要么是表示向右走的 1,要么是表示向左走的 -1。接下来,choice([0,1,2,3,4]) 随机的选择一个 0~4 的整数,告诉 Python 沿指定方向走多远(x_distance)。通过包含 0 ,不仅能够同时沿两个轴移动,还能够只沿一个轴移动。
- 将 移动方向乘以移动距离,确定沿 x 轴和 y 轴移动的距离。如果 x_step 为正将向右移动,为负将向左移动,为零将垂直移动;如果 y_step 为正将向上移动,为负将向下移动,为零将水平移动。如果 x_step 和 y_step 都为零,则意味着原地踏步。我们拒绝这样的情况,接着执行下一次循环。
- 为获取漫步中下一个点的 x 的值,将 x_step 和 x_values 中的最后一个值相加,对 y 值也做相同的处理。获得下一个点的 x 值和 y 值后,将它们分别附件到列表 x_values 和 y_values 的末尾。
3. 绘制随机漫步图
下面的代码将随机漫步的所有点都绘制出来:
from random import choice
import matplotlib.pyplot as pltclass RandomWalk:'''一个生成随机漫步数据的类'''def __init__(self, num_points = 5000):'''初始化随机漫步的属性'''self.num_points = num_points# 所有随机漫步都使于(0,0)self.x_values = [0]self.y_values = [0]def fill_walk(self):'''计算随机漫步包含所有的点'''# 不断漫步,直到列表达到指定的长度while len(self.x_values) < self.num_points:# 决定前进的方向以及沿着这个方向前进的距离x_direction = choice([1,-1])x_distance = choice([0,1,2,3,4])x_step = x_direction * x_distancey_direction = choice([1,-1])y_distance = choice([0,1,2,3,4])y_step = y_direction * y_distance# 拒绝原地踏步if x_step == 0 and y_step == 0:continue# 计算下一个点的 x 值和 y 值x = self.x_values[-1] + x_stepy = self.y_values[-1] + y_stepself.x_values.append(x)self.y_values.append(y)# 创建一个 RandomWalk 实例
random_wander = RandomWalk()
random_wander.fill_walk()# 将所有的点都绘制出来
plt.style.use('classic')
(fig,ax) = plt.subplots()
ax.scatter(random_wander.x_values, random_wander.y_values, s = 15)
plt.show()
4. 总结
这篇文章主要讲解了随机漫步相关知识点。这期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷~,笔者必回,我们下期再见啦 !!
相关文章:

Python 随机漫步
目录 1. 创建 RandomWalk 类 2. 选择方向 3. 绘制随机漫步图 4. 总结 本篇博客将使用 Python 来 生成随机漫步数据,再使用 Matplotlib 库,将以引人注目的方式将这些数据呈现出来。 随机漫步 顾名思义就是随机走出的步伐,它是这样行…...

Spark SQL优化机制
Spark SQL优化机制Spark SQLCatalyst 优化器逻辑优化物理优化TungstenUnsafe RowWSCGRDD 缺点 : RDD的算子都是高阶函数 ,Spark Core 不知函数内的操作,只能闭包形式发给 Executors, 无法优化 DataFrame 不同点: 数据的表示形式…...

十五、Spring中的八大模式
1 简单工厂模式 BeanFactory的getBean()方法,通过唯一标识来获取Bean对象。是典型的简单工厂模式(静态工厂模式); 2 工厂方法模式 FactoryBean是典型的工厂方法模式。在配置文件中通过factory-method属性来指定工厂方法&#x…...

GrabCut算法、物体显著性检测
图割GraphCus算法。利用颜色、纹理等信息对GraphCut进行改进,形成效果更好的GrabCut算法。 对图像的目标物体和背景建立一个K维的全协方差高斯混合模型。 其中,单高斯模型的概率密度函数用公式表示为: 高斯混合模型可表示为n个单高斯模型的概…...

亚马逊、速卖通、lazada店铺一直不出单,没流量怎么办?
近几年,跨境电商入驻的卖家越来越多,平台的流量越来越分散,导致店铺没有流量没有订单的情况经常发生,因此卖家对店铺的优化尤为主要。 对于亚马逊卖家来说,几乎每天都会问虽然我把我的产品放在货架上,但没…...

深度剖析C语言符号篇
致前行的人: 人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定冷静,学习如何从慌乱中找到生机。 目录 1.注释符号: 2.续接符和转义符: 3.回车与换行…...
【学习总结】ORBSLAM3使用自己相机数据
本文仅用于自己学习总结。本文档记录如何修改ORBSLAM3的接口,用自己的图片和数据。 单目视觉,无IMU,离线数据运行的配置过程 euroc_examples.sh 首先从euroc_examples.sh这个运行指令改。这个文件在最新版的代码中被删掉了,但通…...

C++单例模式实现
目录 1.提出的需求 2.如何定义一个类,使得这个类最多只能创建一个对象? 3.代码 4.小结 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 1.提出的需求 在架构设计时&am…...

343. 整数拆分
343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: n 10 输出: 36…...

SCAFFOLD: Stochastic Controlled Averaging for Federated Learning学习
SCAFFOLD: Stochastic Controlled Averaging for Federated Learning学习背景贡献论文思想算法局部更新方式全局更新方式实验总结背景 传统的联邦学习在数据异构(non-iid)的场景中很容易产生“客户漂移”(client-drift )的现象,这会导致系统的收敛不稳定或者缓慢。…...
第十四届蓝桥杯三月真题刷题训练——第 3 天
目录 题目1:门牌制作 题目描述 运行限制 代码: 题目2:货物摆放_long 题目描述 答案提交 运行限制 代码: 题目3:跳跃_dp 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 题目4&a…...
变量的四大存储类型static extern auto register
变量的四大存储类型static extern auto register外部变量(全局变量)extern----全局静态存储区定义 引用性声明❗易错点:函数之外未定义的变量一般是外部变量 extern全局变量 与 局部变量的区别‼️ 谨记:声明可以多次,…...

JavaScript基础五、语句
零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…...

青龙面板399乐园
1.拉库 ql raw https://wjkjy.cn/wp-content/uploads/2023/03/1678104978-afaecb98a9df61e.js 2.抓包 7.26 399乐园 每天 七八毛左右 脚本已完成全部任务,自动提现 下载链接:https://3mao.lanzoul.com/izGDh084oogh 抓包链接 https://339.mhhuanyue.c…...
自动化注册组件
// components/index.js export default { install(app) { const req require.context(‘./’, false, /.vue$/) // console.log(req, ‘req’) req.keys().forEach((item) > { // console.log(item, ‘item’) const com req(item).default // console.log(com, ‘com’)…...
【JS代码优化一】分支优化篇
序:如何让代码看起来更优雅?代码是由文字堆叠起来的可以被机器执行的程序。它记载着相关信息(状态)、表达相关的情绪(函数),所以如何能够写出简洁、优雅、健壮、可维护性强的程序至关重要。本系…...
软件测试-接口测试-补充
文章目录 1.持续集成2. mock测试3.Fiddler 抓包工具3.1 弱网测试4. webservice1.持续集成 持续集成概念 重复执行开发提交代码并集成到主干; aim 加速产品迭代 好处 快速发现问题 避免分支大幅度偏离主干 加速产品发布 工具 git:源代码版本工具github:代码仓库jenkins:持续…...
Spring笔记(5):Beans自动装配
为什么需要使用自动装配 在通过XML配置文件进行设置Bean元素注入与声明注册后,我们能够发现一个问题,在项目中是会存在大量对象的,不可能全部都写在XML文件中,那会显得非常的臃肿,不利于后期维护,所以需要用…...

Spark+Vue+Springboot 协同过滤额音乐推荐大数据深度学习项目
一、项目背景 随着互联网的发展,大数据的到来,传统的音乐行业受到了很大的冲击,原有的音乐数字化给人们生活带来了极大的便利。随着数字音乐的兴起,各大音乐平台层出不穷,人们在音乐平台上收听音乐的时,常常因为歌曲信息繁杂,而不能找到自己想听的音乐。为了解决这个问题,音乐…...

JDBC的实现(IDEA版)
前期准备 开发环境: IDEA 2021.1.3 JAVA 1.8 MYSQL 8.0.32 msql用户名:root 密码:123 下载MySQL JDBC 驱动 前往MySQL官网下载对应版本的MySQL Connector/J驱动 (下载地址:https://dev.mysql.com/downloads/connector/j/ÿ…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...