随机漫步

随机漫步实现主要有以下两个步骤
(1)python确定每次迭代后的落脚点坐标(该坐标是随机的),将每次生成的落脚点坐标存入列表。
(2)利用matplotlib中的散点图绘制随机漫步图形。

随机漫步在现实中都具有实际的用途:漂浮在水滴上的花粉因不断受到水分子的挤压而在水面上移动。水滴中的分子运动是随机的,因此花粉在水面上的运动路径犹如随机漫步。

(1)python实现随机漫步(算法模块)

#需先导入random包当中的choice函数
#choice()方法将实现从列表,元组或字符串中返回一个随机的项目
from random import choice#创建一个用于实现随机漫步的RandomWalk类
class RandomWalk():"""一个生成随机漫步数据的类"""def __init__(self, num_points=5000):#默认迭代5000次"""初始化随机漫步的属性"""#存储随机漫步次数的变量self.num_points = num_points  #默认值为5000#两个列表存储随机漫步经过的每个点的x和y坐标# 所有随机漫步都始于(0, 0)self.x_values = [0]self.y_values = [0]#为做出随机决策,我们将所有可能的选择都存储在一个列表中,并在每次做决策时都使用choice()来决定使用哪种选择。# 接下来,我们将随机漫步包含的默认点数设置为5000,这大到足以生成有趣的模式,同时又足够小,可确保能够快速地模拟随机漫步。# 然后,我们创建了两个用于存储x和y值的列表,并让每次漫步都从点(0, 0)出发。#选择移动方向#利用fill_walk()来生成漫步包含的点,并决定每次漫步的方向def fill_walk(self):#随机漫步,自定义行进路径"""计算随机漫步包含的所有点"""# 不断漫步,直到列表达到指定的长度while len(self.x_values)<self.num_points:#决定前进方向以及沿这个方向前进的距离#x轴方向x_direction = choice([1, -1])#方向x_distance = choice([0, 1, 2, 3, 4])#距离x_step = x_direction * x_distance#前进or后退的距离#y轴方向y_direction = choice([1, -1])  #向右走为1 向左走为-1y_distance = choice([0, 1, 2, 3, 4])  #规范前进步数0-4步y_step = y_direction * y_distance# 拒绝原地踏步if x_step == 0 and y_step == 0:continue# 计算下一个点的x和y值 self.x_values[-1] #每次都取最后一个数next_x = self.x_values[-1] + x_stepnext_y = self.y_values[-1] + y_step#将移动的每个坐标都进行记录self.x_values.append(next_x)#添加进入x轴坐标位置self.y_values.append(next_y)#添加进入y轴坐标位置

(2)可视化呈现随机漫步结果
#绘制随机漫步图

# 创建一个RandomWalk实例,并将其包含的点都绘制出来
def show_RandomWalk():rw = RandomWalk(5000) #新建实例化 迭代5000次rw.fill_walk()#开始绘制漫步图(在绘图之前,所有点的行走都已完成)#采用颜色映射plt.scatter(rw.x_values,rw.y_values,c=rw.y_values,cmap=plt.cm.Greens,s=20)plt.show()


【项目拓展】:
模拟多次随机漫步
【逻辑思路】:利用状态变量,把所有的代码都放在一个while恒真循环中,通过break结束while循环,决定随机漫步是否继续进行。

def show_continue():#只要程序处于活动状态,就不断地模拟随机漫步   绘制散点图的随机漫步while True:#采用恒真循环# 创建一个RandomWalk实例,并将其包含的点都绘制出来rw = RandomWalk()#随机漫步确定落脚点rw.fill_walk()#开始画图# 设置绘图窗口的尺寸  函数figure()用于指定图表的宽度、高度、分辨率和背景色。你需要给形参figsize指定一个元组,向matplotlib指出绘图窗口的尺寸,单位为英寸。plt.figure(dpi=128,figsize=(10, 6))#figsize参数 设置窗口大小  尺寸形式应为元组形式 (长,宽) 传递参数#dpi参数  设置图像分辨率#生成数字列表,其中包含的数字个数与漫步包含的点数相同。#以便后面使用它来设置每个漫步点的颜色,以显示绘制点的前后顺序。point_numbers = list(range(rw.num_points))#绘图  并显示绘制点的前后顺序plt.scatter(rw.x_values, rw.y_values,c=point_numbers,cmap=plt.cm.Blues,s=15,edgecolor="none")#突出(标明)起点和终点 着重符plt.scatter(0, 0, c='green', edgecolors='none', s=100) #起点plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100) #终点# 隐藏坐标轴#隐藏双侧坐标轴plt.axis('off')#隐藏单轴不可见# plt.gca().get_xaxis().set_visible(False) #x轴# plt.gca().get_yaxis().set_visible(False)#y轴# 设置每个坐标轴的取值范围  设置坐标轴范围# plt.axis([0, 1100, 0, 1100000])#显示plt.show()#询问是否继续行进keep_running = input("Make another walk? (y/n): ")if keep_running == 'n':#退出循环break

Python可视化——随机漫步相关推荐

  1. Python模拟随机漫步

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

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

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

  3. 【Python】随机漫步

    欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行.动静不失其时,其道光明. 目录 1.缘起 2.创建 RandomWalk 类 3.随机选择方向 4.绘制随机漫步图 5.总结 ...

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

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

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

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

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

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

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

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

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

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

  9. python基于随机森林模型的预测概率和标签信息可视化ROC曲线

    python基于随机森林模型的预测概率和标签信息可视化ROC曲线 目录 python基于随机森林模型的预测概率和标签信息可视化ROC曲线

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

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

最新文章

  1. python自动化办公脚本下载-python自动化脚本
  2. 随手记:IDAPro蛮强大
  3. 基础实验中的抗体选择过程和避坑Tips
  4. 阿里云使用笔记-Lrzsz上传下载文件-centos7
  5. 2021年11月国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
  6. fir1截止频率计算_数字信号处理 实验五:FIR数字滤波器设计与软件实现
  7. MHA高可用 MHA+Keepalive
  8. epoll编程实例客户端_网络编程:epoll
  9. 主板声卡坏了会不会有电流声_选择声卡讲究多 不同领域适使用不同类型
  10. 2011年 最新Gmail改版后 申请免费的Gmail企业邮箱图文教程
  11. java高级计算器_高级计算器[Java版]
  12. 为创业者搭建梦想舞台,让技术与创新说话|腾讯数字安全创新大赛 · 嘉宾访谈
  13. 联想小新触摸板驱动_联想 小新Air 13.3触摸板怎么用?
  14. Jasper 中文字体
  15. 计算机硬件倒计时牌,自制数码管中考倒计时牌
  16. 国产监控摄像头占领英国市场 专家怕言行被掌控
  17. 【2015DTCC】京东分布式缓存与高速NoSQL服务
  18. 体验MyIE2强大功能 网际畅游应用技巧集锦
  19. MyBatis环境搭建
  20. C 语言管理个人财务系统

热门文章

  1. java中编写一个三角形类,java 三角形类Triangle java 三角形类 Triangle的用法详解
  2. 【记录30】条形码的生成
  3. 保护眼睛,绿豆沙颜色的RGB值和HSL值
  4. 【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文详解
  5. 计算机桌面图标怎么变形了,教您电脑桌面图标变大了怎么办
  6. Codeforces Round #469 (Div. 2) F. Curfew
  7. C语言求解黎曼 函数非平凡零点,51、黎曼函数的“非平凡零点 (1/2)z”是什么玩意?...
  8. 求解最大连续子序列和问题———分治法
  9. 模拟飞机票订票系统设计心得
  10. 百度云重置服务器密码,单台或多台腾讯云服务器 CVM 重置实例密码教程