Python 随机漫步
创始人
2024-05-29 12:46:17
0

目录

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.  总结 

         这篇文章主要讲解了随机漫步相关知识点。这期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷~,笔者必回,我们下期再见啦 !!

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...