欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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()

运行结果:
python模拟随机漫步

本文地址:https://blog.csdn.net/qq_34329430/article/details/107139697