【Python】随机漫步
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。
目录
1、缘起
2、创建 RandomWalk 类
3、随机选择方向
4、绘制随机漫步图
5、总结
1、缘起
本篇博客将使用 Python 来生成随机漫步数据,再使用 Matplotlib 库,将以引人注目的方式将这些数据呈现出来。
随机漫步 顾名思义就是随机走出的步伐,它是这样行走得到的路径:每次行走都是完全随机的、没有明确的方向,结果是由一系列随机决策决定的。我们可以将随机漫步看作是 蚂蚁在晕头转向 的情况下,每次都沿随机的方向前行所经过的路径。
2、创建 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)出发。
3、随机选择方向
我们将使用自己定义的方法 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 轴坐标 x_step = x_direction * x_distancey_direction = random.choice([1,-1])y_distance = random.choice([0,1,2,3,4])# y 轴坐标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([0,-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 的末尾。
4、绘制随机漫步图
下面的代码将随机漫步的所有点都绘制出来:
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 轴坐标x_step = x_direction * x_distancey_direction = choice([1,-1])y_distance = choice([0,1,2,3,4])# y 轴坐标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()
5、总结
这篇文章主要讲解了随机漫步相关知识点。本期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷~,笔者必回,我们下期再见啦 !!
【Python】随机漫步相关推荐
- 【Matplotlib】【Python】如何使用matplotlib绘制绘制随机生成的点--随机漫步详解
目录 1.绘制随机漫步 2.模拟多次随机漫步 3.给点着色 4.重新绘制起点和终点 5.隐藏坐标轴 随机漫步是指每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的. 为模拟随机漫步, ...
- Python模拟随机漫步
本文用Python模拟随机漫步行为. 1 使用内建的的random模块 import randomposition = 0 walk = [position] steps = 1000 for i i ...
- Python中使用random随机函数与Matplotlib库绘制随机漫步图
Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...
- 股票价格在随机漫步吗?用 Python 来告诉你
1. 什么是随机漫步 在这个世界上存在的现象大体分为必然现象和随机现象两类.必然现象就像太阳每天必然从东边升起,西边落下那样,在相同条件下完全可以事先预测到它的结果.随机现象则不同,它在个别试验中会呈 ...
- 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random Walk)是一种解决随机问题的方法,它 ...
- 蒙特卡罗仿真(2):醉汉的随机漫步仿真示例(Python实现)
目录 1. 前言 2. 为什么要做蒙特卡罗仿真? 3. 第一个仿真程序 4. 仿真封装及批量仿真 5. 醉汉能回家吗? 1. 前言 上一篇(蒙特卡罗仿真(1):入门求生指南(Python实例))通过几 ...
- Python量化交易基础讲堂-可视化随机漫步轨迹
在< Python实战-构建基于股票的量化交易系统 >小册子的<前置基础:由例程快速入门常用数据分析工具>小节我们用到了一副插图: 这里我们结合小册中Numpy.Matplot ...
- 手把手讲解python在随机漫步理论的应用
随机漫步理论–python手把手讲解 随机漫步理论是由Karl Pearson 于1905年提出的,它是一种变化形式,在运动过程中每一步都是随机,没有明确的方向.这个在自然界.物理学.生物学.化学和经 ...
- python随机画散点图-python散点图实例之随机漫步
随机漫步是这样行走得到的途径:每次行走都是完全随机的,没有明确的方向,结果是由一系列随机决策决定的. random_walk.py #random_walk.py from random import ...
最新文章
- 深度学习之seq2seq、编码器解码器、注意力机制、Transformer
- go语言中fmt包中Print、Printf、Println输出相关函数的区别
- 《×××颂》贵在突破了中国花鸟画难以反映社会主题的尴尬
- Java:重写equals()和hashCode()
- mysql safe无法启动_解决mysqld_safe无法启动问题的方法
- 8、JavaScript深入浅出——数据类型
- 江苏:5G先行,智慧江苏再进一步
- C#系列之聊聊.Net Core的InMemoryCache
- centos7下安装mysql8社区版的过程,20200129
- 中断linux命令快捷键_实用!快速操作Linux终端命令行的快捷键
- zabbix监控添加主机,报警、监控的设置
- 传感器怎么获取障碍物的宽度信息_机器人感知 -- 测距传感器
- jquery.cookie使用方法
- 计算机里只剩c盘了,家里电脑上突然只剩下C盘,怎么处理
- 2011美剧季终/剧终时间表。
- NPOI Word 换行 【XWPFDocument】
- 如何更改IE窗口初始大小及位置
- Linux中verilog-mode使用方法总结
- python七段数码管绘制实验报告_Python绘制七段数码管实例代码
- 七日杀服务器无限刷空投,七日杀空投作弊代码 | 手游网游页游攻略大全
热门文章
- 3.9 Docker最新入门教程-Docker入门-构建镜像最佳实践
- java –cp ./:_7位专家– 7条意见:您想在Java 14中看到什么?
- 网狐、6878、名字修改图片文字路径【第四次更新】
- 算法(三)列举所有k-mer的组合
- Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务
- 共享办公室成为共享经济发展大趋势
- c语言112页答案,沪科版七年级下册数学书答案
- openwrt 恢 复 出厂设置
- 深富策略短线消化市场情绪
- simp服务器协议,Redis协议(RESP)规范