内容:

模仿醉汉在二维空间上的随机漫步:一个醉汉喝醉酒,每次只能走一步,每步分别沿着x,y轴走一个单位长度,试着画出醉汉的轨迹。

方法一:沿任意方向移动

思路:醉汉可以往任意方向走一步,则移动的角度可以为360中的任意数,将角度转化为弧度制则可以计算得到移动的坐标信息,起始的坐标为(0,0),每一次的移动则为当前的位置坐标加上移动的坐标,更新当前的坐标,存储每一次移动后的坐标即可得到相应的路线图。

代码

# -*- coding=utf-8 -*-
# name: nan chen
# date: 2021/3/11 16:00
import matplotlib.pyplot as plt
import numpy as np
import math# 目前的位置
cur = [0, 0]
# 总步数
allstep = 1000
# 用于存储移动后的每一次位置
movex, movey = [0], [0]
while (allstep > 0):angle = np.random.randint(360)# 将随机角度转化为对应的弧度制index = np.deg2rad(angle)# 随机移动的x轴与y轴坐标x = math.cos(index)y = math.sin(index)# 移动当前位置cur[0] = cur[0] + xcur[1] = cur[1] + y# 保存目前的位置信息,方便绘制图像movex.append(cur[0])movey.append(cur[1])allstep -= 1plt.title('walk')
# 初始点
plt.scatter(0, 0, c='r')
plt.plot(movex, movey)
# 结束点
plt.scatter(cur[0], cur[1], c='gold')
plt.show()

运行结果

方法二:沿坐标轴随机移动

思路:醉汉可以往x y方向走一步,则移动的坐标可以为[-1,0,1]三个数中任意两个数的组合。起始的坐标为(0,0),每一次的移动则为当前的位置坐标加上移动的坐标,存储每一次移动后的坐标,并更新当前的坐标。走完后,根据存储的坐标绘制路线图。

代码:

allmove = [cur]
allstep = 1000
while (allstep > 0):# 随机选取[-1 0 1]中的两个点作为移动位置indexs = np.random.randint(-1, 2, 2);move = []for index in indexs:move.append(index)move1 = np.array(move)# 更改当前位置cur = cur + move1allmove.append(cur)allstep -= 1
movex = []
movey = []
for move in allmove:movex.append(move[0])movey.append(move[1])
plt.title('walk')
plt.scatter(0, 0, c='r')
plt.plot(movex, movey)
plt.scatter(cur[0], cur[1], c='gold')
plt.show()

运行结果

python基础-模仿醉汉在二维空间上的随机漫步相关推荐

  1. python基础教程--代码集合(上)

    文章目录 1.转义字符与原字符 2.二进制与字符编码 3.二进制编码 4.变量定义 4.数据类型 5.浮点数类型 6.布尔类型 7.字符串类型 8.数据类型转换 9.注释功能 10.标识符和保留字 1 ...

  2. python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)

    内容简述: 1.函数定义 2.形参与实参 3.关键字参数与默认参数 4.可变参数 5.全局变量与局部变量 6.内部函数 7.闭包 8.lambda表达式 9.递归 1.函数定义 我们可以将一些实现特定 ...

  3. 随机漫步问题(醉汉行走)

    模仿醉汉在二维空间上的随机漫步:一个醉汉喝醉酒,每次只能走一步,每步分别沿着x,y轴走一个单位长度,试着画出醉汉的轨迹. import matplotlib.pyplot as plt import ...

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

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

  5. 零基础学python免费网课-零基础学Python量化投资,超值线上课程反复回看

    原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...

  6. Python基础教程书籍案例:新闻采集(新闻聚合)【上】

    这个练习项目来自<Python基础教程(第2版)>,案例原名为"新闻聚合". 项目分为两个阶段: 第一阶段:通过与NNTP服务器进行交互获取新闻源. 第二阶段:获取不同 ...

  7. Python基础学习备忘录上

    Python基础学习 备忘录上 Python语法 1.1 输出 1.1.1 输出换行的更改 1.1.2 输出整型 1.1.3 输出字符串 1.1.4 字符串拼接与多行输出 1.1.5 输入输出类型转换 ...

  8. Python基础入门----基本数据类型上

    Python基础入门篇 粉丝问题整理 前两节我们安装了Python3.7.0和Pycharm(代码编译器),本节我们从Python基本数据类型开始分享,不知道朋友们是否明白上两节的分享?如果没有请直接 ...

  9. python线上课程-零基础学Python量化投资,超值线上课程反复回看

    原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...

最新文章

  1. Spring 教程(三) 环境设置
  2. 20155213 2016-2017-2 《Java程序设计》第七周学习总结
  3. 离职那天!同龄的CTO悄悄私信我,他的年薪是我的10倍
  4. 小程序获取form_id 与 小程序获取openid
  5. Boost.Flyweight 键值测试的类
  6. 适用于无服务器Java开发人员的AWS Lambda:它为您带来了什么?
  7. Oracle Service Bus简介
  8. js 在html中新建个节点,javascript节点是什么?
  9. 拓端tecdat|R语言分位数回归Quantile Regression分析租房价格
  10. Java编写五线谱上的音符_新手读懂五线谱
  11. html注册页面教程视频,新手建站HTML 学习系列视频教程之HTML 简介
  12. 微信公众平台与微信公众平台的区别与联系
  13. 2019 ICPC 南京区域赛 - H Prince and Princess(博弈+思维)
  14. 三十分钟理解:稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
  15. PC端如何使用ITunes无线连接ios手机
  16. 低多边形,通过PS制作低多边形图形
  17. 基于Arduino的智能泡茶机(1)——机械系机械创新比赛总结技术点与不足处
  18. ch341a i2c 安卓_CH341A安卓平板OTG连接成功但读取不到数据
  19. element-ui中的多层表单循环验证处理
  20. 一位特殊的中国特斯拉车主,让马斯克感动了

热门文章

  1. gprmax构造多层均质土壤模型
  2. ac6005直连ap 如何配置_WLAN1:AC6005组网配置实验
  3. 暴风集团入多个被执行人名单-千氪
  4. mysql 存储过程中 if else的使用 和赋值方式
  5. 中专计算机与外设维修,《计算机维护与维的修》级计算机及外设维修三中专教学大纲.doc...
  6. 数理统计10.15 | 幂律分布
  7. Python 中的列表(二)
  8. 二维等离子体输运与反应动力学求解器PASSKEy中BOLSIG文件获取过程(附视频链接)
  9. 异物堆积,导致手机Type-C接口充电不畅、无法充电的问题
  10. 攻防世界Misc-来自银河的信号