欢迎来到博主 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】随机漫步相关推荐

  1. 【Matplotlib】【Python】如何使用matplotlib绘制绘制随机生成的点--随机漫步详解

    目录 1.绘制随机漫步 2.模拟多次随机漫步 3.给点着色 4.重新绘制起点和终点 5.隐藏坐标轴 随机漫步是指每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的. 为模拟随机漫步, ...

  2. Python模拟随机漫步

    本文用Python模拟随机漫步行为. 1 使用内建的的random模块 import randomposition = 0 walk = [position] steps = 1000 for i i ...

  3. Python中使用random随机函数与Matplotlib库绘制随机漫步图

    Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...

  4. 股票价格在随机漫步吗?用 Python 来告诉你

    1. 什么是随机漫步 在这个世界上存在的现象大体分为必然现象和随机现象两类.必然现象就像太阳每天必然从东边升起,西边落下那样,在相同条件下完全可以事先预测到它的结果.随机现象则不同,它在个别试验中会呈 ...

  5. 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...

    世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random  Walk)是一种解决随机问题的方法,它 ...

  6. 蒙特卡罗仿真(2):醉汉的随机漫步仿真示例(Python实现)

    目录 1. 前言 2. 为什么要做蒙特卡罗仿真? 3. 第一个仿真程序 4. 仿真封装及批量仿真 5. 醉汉能回家吗? 1. 前言 上一篇(蒙特卡罗仿真(1):入门求生指南(Python实例))通过几 ...

  7. Python量化交易基础讲堂-可视化随机漫步轨迹

    在< Python实战-构建基于股票的量化交易系统 >小册子的<前置基础:由例程快速入门常用数据分析工具>小节我们用到了一副插图: 这里我们结合小册中Numpy.Matplot ...

  8. 手把手讲解python在随机漫步理论的应用

    随机漫步理论–python手把手讲解 随机漫步理论是由Karl Pearson 于1905年提出的,它是一种变化形式,在运动过程中每一步都是随机,没有明确的方向.这个在自然界.物理学.生物学.化学和经 ...

  9. python随机画散点图-python散点图实例之随机漫步

    随机漫步是这样行走得到的途径:每次行走都是完全随机的,没有明确的方向,结果是由一系列随机决策决定的. random_walk.py #random_walk.py from random import ...

最新文章

  1. 深度学习之seq2seq、编码器解码器、注意力机制、Transformer
  2. go语言中fmt包中Print、Printf、Println输出相关函数的区别
  3. 《×××颂》贵在突破了中国花鸟画难以反映社会主题的尴尬
  4. Java:重写equals()和hashCode()
  5. mysql safe无法启动_解决mysqld_safe无法启动问题的方法
  6. 8、JavaScript深入浅出——数据类型
  7. 江苏:5G先行,智慧江苏再进一步
  8. C#系列之聊聊.Net Core的InMemoryCache
  9. centos7下安装mysql8社区版的过程,20200129
  10. 中断linux命令快捷键_实用!快速操作Linux终端命令行的快捷键
  11. zabbix监控添加主机,报警、监控的设置
  12. 传感器怎么获取障碍物的宽度信息_机器人感知 -- 测距传感器
  13. jquery.cookie使用方法
  14. 计算机里只剩c盘了,家里电脑上突然只剩下C盘,怎么处理
  15. 2011美剧季终/剧终时间表。
  16. NPOI Word 换行 【XWPFDocument】
  17. 如何更改IE窗口初始大小及位置
  18. Linux中verilog-mode使用方法总结
  19. python七段数码管绘制实验报告_Python绘制七段数码管实例代码
  20. 七日杀服务器无限刷空投,七日杀空投作弊代码 | 手游网游页游攻略大全

热门文章

  1. 3.9 Docker最新入门教程-Docker入门-构建镜像最佳实践
  2. java –cp ./:_7位专家– 7条意见:您想在Java 14中看到什么?
  3. 网狐、6878、名字修改图片文字路径【第四次更新】
  4. 算法(三)列举所有k-mer的组合
  5. Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务
  6. 共享办公室成为共享经济发展大趋势
  7. c语言112页答案,沪科版七年级下册数学书答案
  8. openwrt 恢 复 出厂设置
  9. 深富策略短线消化市场情绪
  10. simp服务器协议,Redis协议(RESP)规范