鱼C论坛

 找回密码
 立即注册
查看: 1087|回复: 2

[技术交流] Python小白从挖坑到脱坑之路031_对于随机漫步图的一些思考

[复制链接]
发表于 2018-9-12 14:12:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天看到《Python编程:从入门到实践》第15.3章节讲到如何用matplotlib绘制随机漫步图,引发了自己的一些思考,发帖记录留存,先上代码。
random_walk.py
  1. from random import choice

  2. class RandomWalk():
  3.        
  4.         def __init__(self, num_points = 5000):
  5.                 self.num_points = num_points
  6.                 self.x_values = [0]
  7.                 self.y_values = [0]
  8.        
  9.         def fill_walk(self):
  10.                 while len(self.x_values) < self.num_points:
  11.                        
  12.                         x_direction = choice([1,-1])
  13.                         x_distance = choice([0,1,2,3,4])
  14.                         x_step = x_direction * x_distance
  15.                        
  16.                         y_direction = choice([1,-1])
  17.                         y_distance = choice([0,1,2,3,4])
  18.                         y_step = y_direction * y_distance
  19.                        
  20.                         if x_step == y_step ==0:
  21.                                 continue
  22.                        
  23.                         next_x = self.x_values[-1] + x_step
  24.                         next_y = self.y_values[-1] + y_step
  25.                        
  26.                         self.x_values.append(next_x)
  27.                         self.y_values.append(next_y)
复制代码



rw_visual.py
  1. import matplotlib.pyplot as plt
  2. from random_walk import RandomWalk

  3. while True:
  4.         rw = RandomWalk()
  5.         rw.fill_walk()
  6.         print(rw.x_values)
  7.         point_numbers = list(range(rw.num_points))
  8.        
  9.         plt.figure(figsize=(10,6))
  10.        
  11.         plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,edgecolor='none',s=5)
  12.        
  13.         #标注起点和重点
  14.         plt.scatter(0,0,c='green',edgecolors='none',s=100)
  15.         plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',s=100)
  16.        
  17.         plt.show()
  18.        
  19.         keep_running = input('Again?(y/n):')
  20.         if keep_running == 'n':
  21.                 break
复制代码


突然想到小甲鱼书中乌龟吃鱼的游戏,完全可以用来绘制乌龟和鱼的动态图,并且可以根据“K最邻近算法”(来自《算法图解》第10章),根据乌龟和鱼的距离权重,计算剩下存活的每条鱼每步之后被吃的概率和乌龟吃到鱼的概率。有时间可以温故尝试,一定挺好玩的!深入学习后也许可以用到工作中,监控设备的故障点、特定参数等大数据信息分析一些可能引起故障的原因,以及预测即将发生故障的设备。
PS:帖子审核如果不通过能否给个提示原因,并且给个重新修改编辑的机会,否则那么多字白打很郁闷!
Figure_1.png
Figure_2.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-25 23:29:54 | 显示全部楼层
我擦,兄弟,你怎么和我想一块去了
我在写乌龟吃鱼的时候就在想,如何找出鱼数量,游戏面积与乌龟胜利之间联系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-26 10:57:16 | 显示全部楼层
RIXO 发表于 2018-9-25 23:29
我擦,兄弟,你怎么和我想一块去了
我在写乌龟吃鱼的时候就在想,如何找出鱼数量,游戏面积与乌 ...

哈哈随便想想没时间具体操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 19:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表