python模拟随机漫步
程序员文章站
2022-09-14 08:38:57
一 创建RandomWalk类需要注意的知识点1 choice(列表) :可以获取一个列表中的随机数值2 列表名[-1] :表示当前列表的最后一个值'''导入 choice模块,用来获取随机方向与随机步长'''from random import choice'''创建RandomWalk类'''class RandomWalk(): def _init_(self,num_points=5000): self.num_points=num_points #步数,...
一 创建RandomWalk类
需要注意的知识点
1 choice(列表) :可以获取一个列表中的随机数值
2 列表名[-1] :表示当前列表的最后一个值
'''导入 choice模块,用来获取随机方向与随机步长'''
from random import choice
'''创建RandomWalk类'''
class RandomWalk():
def _init_(self,num_points=5000):
self.num_points=num_points #步数,定义默认值为5000步
self.x_values=[0]#初始x列表值
self.y_values=[0]#初始y列表值
self.x_directon =0 #初始x方向
self.x_distance=0 #初始y方向
self.step=0 #初始步长
'''定义填充x步长,y步长的函数,调用此函数将会填充x_values y_values列表'''
def fill_walk(self):
'''while循环,x列表内元素个数大于步数时,结束循环'''
while len(self.x_values)<self.num_points:
'''x方向获取一个随机步长'''
x_step=self.get_step()
'''y方向获取一个随机步长'''
y_step =self.get_step()
'''如果x y移动距离都是0,则原地不动,用if 排除这种情况'''
if x_step==0 and y_step==0:
continue
'''获取下一步的位置,即当前位置加上要移动的距离'''
next_x=self.x_values[-1]+x_step
next_y = self.y_values[-1] + y_step
'''append添加到列表中'''
self.x_values.append(next_x)
self.y_values.append(next_y)
'''定义获取步长函数,调用此函数将会返回一个在[-4,+4]之间的随机整数,用来模拟随机步长'''
def get_step(self):
'''调用choice函数,获取一个随机方向'''
self.x_directon = choice([1, -1])
'''调用choice函数,获取一个随机步长'''
self.x_distance = choice(list(range(0, 4)))
'''以上两者相乘,得到一个[-4,+4]之间的随机整数'''
self.step=self.x_directon*self.x_distance
'''返回一个步长整数'''
return self.step
二 利用pyplot绘制随机漫步图
一些plot的基本用法,详细看程序即可
#导入RandomWalk类
from random_walk import RandomWalk
#导入pyplot
import matplotlib.pyplot as plt
'''实例化一个RandomWalk对象,初始化,并获取每一步的坐标'''
rw=RandomWalk()
rw._init_()
rw.fill_walk()
'''设置图片大小'''
plt.figure(figsize=(15,9))
'''用plot函数,设置点的横坐标和纵坐标,画出折线图,线宽设置为1'''
plt.plot(rw.x_values,rw.y_values,linewidth=1)
'''调用scatter函数, 画出每一步的坐标点'''
'''c=rw.y_values,cmap=plt.cm.Blues,设置颜色为渐变'''
''' edgecolor='none'设置去除边缘颜色 s=20 设置点的大小'''
plt.scatter(rw.x_values,rw.y_values,c=rw.y_values,cmap=plt.cm.Blues,edgecolor='none',s=20)
'''绘制起点和终点,颜色设置为绿色,大小设置为100'''
plt.scatter(0,0,c='green',edgecolor='none',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='green',edgecolor='none',s=100)
'''绘制显示'''
plt.show()
运行结果:
本文地址:https://blog.csdn.net/qq_34329430/article/details/107139697