【Python】随机漫步
创建Randomwalk()类
我们将使用Python来生成随机漫步数据,再使用matplotlib以引入瞩目的方式将这些数据呈现出来
首先创建类Randomwalk()
- from random import choice
- class 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_distance
- y_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值
- next_x = self.x_values[-1]+x_step
- next_y = self.y_values[-1] + y_step
- self.x_values.append(next_x)
- self.y_values.append(next_y)
__init__()和fill_walk(),其中后者计算随机漫步经过的所有点。
我们使用choice([1,-1])给direction选择一个值,结果要么是表示向右走1,要么表示向左走-1,接下来,choice([0,1,2,3,4])随机的选择一个0~4之间的整数,告诉Python沿着指定的方向走多远(x_distance)
绘制随机漫步图
- import matplotlib.pyplot as plt
- from matplotlib_test.random_walk import RandomWalk
- #创建一个RandomWalk实例,并将其包含的点都绘制出来
- rw = RandomWalk()
- rw.fill_walk()
- print(rw.x_values)
- plt.scatter(rw.x_values,rw.y_values,s=15)
- plt.show()
运行结果:
我们首先导入模块pyplot和Randomwalk类,然后我们创建一个实例,并将其存储到rw中,再调用fill_walk(),我们将随机漫步的x与y值传递给scatter(),并选择了合适的点尺寸,显示包含5000个点的随机漫步。
模拟多次随机漫步
- import matplotlib.pyplot as plt
- from matplotlib_test.random_walk import RandomWalk
- #只要程序处理活动状态,就不断的随机模拟
- while True:
- #创建一个RandomWalk实例,并将其包含的点都绘制出来
- rw = RandomWalk()
- rw.fill_walk()
- plt.scatter(rw.x_values,rw.y_values,s=15)
- plt.show()
- keep_running = input("Make another walk?(y/n):")
- if keep_running == 'n':
- break
这些代码模拟一次随机漫步,在matplotlib查看器中显示结果,再不关闭查看器的情况下暂停。如果你关闭了查看器,程序询问你是否再模拟一次随机漫步,如果你输入y,那么将继续,如果你输入n,那么将退出。
设置随机漫步图样式
1.给点着色
我们使用颜色映射来指出个点的先后顺序,并删除每个点的黑色轮廓,让他们的颜色更明显,为根据漫步中各点的先后顺序进行着色,我们传递参数c,并将其设置为一个列表,其中包含个点的先后顺序。
运行结果:
2.重新绘制起点与终点
为了凸显上图的起点跟终点,我们可以这么做
运行结果:
3.隐藏坐标轴
为了修改坐标轴,使用函数plt.axes()来将坐标轴的可见性设置为False
运行结果:
4.增加点数
下面我们增加点数,在创建RandomWalk实例时增大num_points的值
运行结果:
5.调整窗口的尺寸大小
图表适合屏幕大小时,更有效的将数据中的规律呈现出来
窗口明显变大
如果知道自己系统的分辨率,还可以使用形参dpi传递该分辨率
- plt.figure(dpi=128,figsize=(10,6))
【Python】随机漫步的更多相关文章
- python随机漫步
- Python 项目实践二(生成数据)第二篇之随机漫步
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...
- Python入门-随机漫步
Python入门-随机漫步,贴代码吧,都在代码里面 代码1 class文件 random_walk.py from random import choice class RandomWalk(): # ...
- python数据可视化(一)——绘制随机漫步图
数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关. python有一系列的可视化和分析工具,最流行的工具之一是matplotlib,它是一个数学绘图库. 实现绘制随机漫步图 利用ra ...
- 数据可视化:使用python代码实现可视数据随机漫步图
#2020/4/5 ,是开博的第一天,希望和大家相互交流学习,很开森,哈哈~ #像个傻子哟~ #好,我们进入正题, #实现功能:利用python实现数据随机漫步,漫步点数据可视化 #什么是 ...
- 今天给大家分享用Python matplotlib来写随机漫步的小程序
先安装两个库: pip install matplotlib pip install numpy 引用库: import matplotlib.pyplot as mp import numpy as ...
- Python实现随机漫步
随机漫步生成是无规则的,是系统自行选择的结果.根据设定的规则自定生成,上下左右的方位,每次所经过的方向路径. 首先,创建一个RandomWalk()类和fill_walk()函数 random_wal ...
- 醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)
世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的. 随机漫步(Random Walk)是一种解决随机问题的方法,它 ...
- NumPy 之 案例(随机漫步)
import numpy as np The numpy.random module supplements(补充) the built-in Python random with functions ...
随机推荐
- Pointcut is not well-formed: expecting 'identifier' at character position 0 ^ || Pointcut is not well-formed: expecting ')' at character position 11 ^
错误提示: 解决方法1:指定execution 在执行目标方法之前指定execution 解决方法2:可能是execution写错了.请仔细检查. 其他——execution参数设置(带问好的可以不配 ...
- eclipse快捷键补全
Eclipse中 补全快捷键 默认Alt+/ 但是每个人习惯有所不同 我需要来修改自己熟悉的快捷键 windows->preferences->General->keys将Conte ...
- 挖煤(coal)
挖煤(coal) solution 我好弱,啥也想不到. 想了很久dp,这有后效性啊. 结果倒着做就可以了,因为后面的不会影响前面的. 考虑前面的影响后面:挖煤相当于让后面所有a[I]*(1+k%) ...
- [USACO Section 5.3]量取牛奶 Milk Measuring (动态规划,背包$dp$)
题目链接 Solution 完全背包 \(dp\) , 同时再加一个数组 \(v[i][j]\) 记录当总和为\(j\) 时第 \(i\) 种物品是否被选. 为保证从小到大和字典序,先将瓶子按大小排序 ...
- Position 属性的学习理解
position 当时在学习的时候也没有进入深入的研究,主要是因为平时自己用的不是很多.今天看到了篇解释不错的文章就整理,学习下. http://www.cnblogs.com/bokin/archi ...
- cf 235C 后缀自动机
题目大意 给定字符串\(S\)与\(n<=10^5\)个串\(x_1,x_2...x_n\)(总长\(\le10^6\)) 对于每个\(x_i\),输出有多少个\(S\)的子串与\(x_i\)循 ...
- jquery.slider jquery滑块插件
原文发布时间为:2011-03-08 -- 来源于本人的百度文章 [由搬家工具导入] http://jqueryui.com/demos/slider jquery滑块插件
- 倒计时浏览器跳转JavaScript
原文发布时间为:2008-10-11 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>显示时间</title> ...
- spring一些总结
Spring中三种实例化bean的方法: 1)使用类构造器 <bean id="orderService" class="cn.itcast.OrderServ ...
- Codeforces 475D CGCDSSQ 区间gcd值
题目链接 题意 给定一个长度为 \(n\) 的数列 \(a_1,...,a_n\) 与 \(q\) 个询问 \(x_1,...,x_q\),对于每个 \(x_i\) 回答有多少对 \((l,r)\) ...