【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、总结 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620504.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化—随机漫步

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;python &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点击跳转进入网站 随机漫步 创建RandomWalk类选择方向…

City walk火了,这3种城市漫步模式了解一下

目 录 1. 城市需要什么样的City walk 2. City walk模式一&#xff1a;「有目标」 3. City walk模式二&#xff1a;「故事化」 4. City walk模式三&#xff1a;「小而密」 关键词&#xff1a; 城市漫步 | 城市更新 | 街区改造 文化旅游 | 微度假 | 扩内需 City walk&#xff08…

7 集群基本测试

1. 上传小文件到集群 在hadoop路径下执行命令创建一个文件夹用于存放即将上传的文件&#xff1a; [atguiguhadoop102 ~]$ hadoop fs -mkdir /input上传&#xff1a; [atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/work.txt /input2.上传大文件 [atguiguhadoop1…

使用OpenCV-python对植物图片进行分类

文章目录 图片分类的思路和需要加载的库函数说明核心代码分析数据预处理&#xff1a;文件处理和命名匹配数据预处理&#xff1a;特征提取和标签提取学习模型&#xff1a;数据划分和模型训练预测输出&#xff1a;利用训练好的模型进行图片分类 完整代码附录和运行结果 图片分类的…

学习记录:Unity点击屏幕生成随机UI花朵

1 效果展示 点击屏幕的位置生成花朵&#xff0c;生成的花朵等5秒后自动销毁。 2 代码展示 1 生成花朵的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 鼠标点击生成花朵 /// </summary> public clas…

利用Python制造出七彩花朵

文章目录 前言小海龟花朵类移动函数画花朵 前言 来啦来啦来啦&#xff0c;小伙伴们快快来领取七彩花瓣雨吧&#xff01;&#xff01; 小海龟 老生常谈啦&#xff0c;在用python画樱花树前&#xff0c;我们先来了解一下turtle吧&#xff01; 小海龟(Turtle)是Python中画图的…

深度学习花朵识别系统的设计与实现

摘要&#xff1a;该项目是基于Keras的VGG16模型微调实现的深度学习花朵识别检测系统&#xff0c;使用Python语言中的cv2和numpy库对图像进行预处理&#xff0c;使用keras的ImageDataGenerator进行数据增强&#xff0c;采用Pyqt5实现功能的可视化&#xff0c;方便用户对图片进行…

使用Pytorch实现图像花朵分类

基于pytorch-classifier这个源码进行实现的图像分类 代码的介绍在这个链接里面&#xff0c;这篇博客主要是为了带着大家通过实践的方式熟悉一下代码的使用&#xff0c;并且了解相关功能。 1. 下载相关资料 这里我提供了一个花朵数据集&#xff0c;里面总共有十个类别的花朵作…

“花朵分类“ 手把手搭建【卷积神经网络】

前言 本文介绍卷积神经网络的入门案例,通过搭建和训练一个模型,来对几种常见的花朵进行识别分类; 使用到TF的花朵数据集,它包含5类,即:“雏菊”,“蒲公英”,“玫瑰”,“向日葵”,“郁金香”;共 3670 张彩色图片;通过搭建和训练卷积神经网络模型,对图像进行分类,…

(笔记一)利用open_cv在图像上进行点标记,文字注记,画圆、多边形、椭圆

&#xff08;1&#xff09;CV2中的绘图函数&#xff1a; cv2.line() 绘制线条cv2.circle() 绘制圆cv2.rectangle() 绘制矩形cv2.ellipse() 绘制椭圆cv2.putText() 添加注记 &#xff08;2&#xff09;注释 img表示需要绘制的图像color表示线条的颜色&#xff0c;采用颜色矩阵…

桌面图标不显示

问题 桌面图标不显示 解决办法 鼠标 右击->选择-查看->显示桌面图标

今天去看看俺姐(老婆)新开的超市

首发博客地址 https://blog.zysicyj.top/ 1 昨晚写博客到12点多&#xff0c;今天困死了&#xff0c;比较意外的是&#xff0c;早上老爸没有叫我&#xff0c;今天早上是老爸和小舅送的葡萄。 所以呢&#xff0c;今早睡得很晚&#xff0c;然后6点多才醒&#xff0c;睡得真舒服&am…

java恶魔之怒太平洋_熊猫人之怒恶魔降临手游辅助下载_熊猫人之怒恶魔降临修改器安卓版V3.1下载(暂未上线)_预约_飞翔下载...

熊猫人之怒恶魔降临修改器是一款简单好用的安卓游戏修改神器。通过修改正在运行的游戏的内存数据&#xff0c;达到修改游戏中的金钱、血量、得分、道具数量、攻击、防御、魔法等参数值。既简单又实用&#xff0c;让你想怎么改&#xff0c;就怎么改&#xff0c;你的游戏你做主。…

LeetCode-738-单调递增的数字

题目描述&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 解题思路&#xff1a; 先将int变成char[]&#xff0c;获取…

UG+PRESSCAD五金连续模 成型模 复合模具设计视频教程

UGPRESSCAD五金连续模 成型模 复合模具设计视频教程 链接&#xff1a;https://pan.baidu.com/s/1MEQdf3DkmHAEHYOrP1USBQ 提取码&#xff1a;r9f0

教程 参数设置_UG教程之非切削参数设置

转移/快速 转移/快速指定如何从一个切削刀路移动到另一个切削刀路。通常情况下,刀具需要进行以下3个动作: (1)从其当前位置移动到指定的平面。 (2)移动到指定平面内高于进刀运动起点的位置。 (3)最后,刀具将从指定平面移动到进刀的起始处。 1.安全设置 功能:安全设置用于指…

在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速

WSL2使用NVIDIA Docker进行全栈开发和深度学习 1. 前置条件 1.1. 安装系统 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 跳过 1.2. 处理好网络环境 安装过程中需要访问国际网络&#xff0c;自行处理好。建议开启 tu…

UML四大关系

文章目录 引言UML的定义和作用UML四大关系的重要性和应用场景关联关系继承关系聚合关系组合关系 UML四大关系的进一步讨论UML四大关系的实际应用软件开发中的应用其他领域的应用 总结 引言 在软件开发中&#xff0c;统一建模语言&#xff08;Unified Modeling Language&#x…

python+协同过滤算法实现简单的图书推荐系统

背景介绍 当我们做一些推荐系统网站时&#xff0c;通常需要合适的推荐算法&#xff0c;下面给大家介绍推荐系统中经典的推荐算法——协同过滤算法。在本文中通过Python语言&#xff0c;以一个图书推荐系统为案例&#xff0c;最终实现一个基于用户对图书的评分而对指定的用户个…