作者:雷蕾
什么是随机漫步?随机漫步是怎样的一个行走路径?随机漫步每次行走都是完全随机的、没有明确的方向,结果是由一系列随机决策决定的。为了更好地理解,我们可以把随机漫步看作是蚂蚁晕头转向的情况下,每次都沿随机的方向前行所经过的路径。
(一)创建RandomWalk类
为模拟随机漫步,将创建一个名为RandomWalk的类,它随机地选择方向前进,这个类需要包含三个属性:一个存储随机漫步次数的变量,其他两个属性是列表,分别存储随机漫步经过的每个点的x坐标和y坐标:
from random import choice
class RandomWalk:
'''一个生成随机漫步数据的类'''
def __init__(self,num_points=5000):
'''初始化随机漫步的属性'''
self.num_points=num_points
#所有随机漫步数都始于0
self.x_values=[0]
self.y_values=[0]
为做出随机决策,将所有可能的选择都存储在一个列表中,并在每次决策时都使用模块random中的choice()来决定使用哪种选择。
类 RandomWalk中定义了方法__init__(),并将随机漫步包含的默认点数设置为5000,当然我们也可改变随机漫步点数。
self.x_values=[0]
self.y_values=[0]
这两行代码是创建两个用于存储x值和y值的列表,并让每次漫步起点从(0,0)开始。
(二)选择方向
在类RandomWalk中定义了方法fill_walk():
#选择方向
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值
x=self.x_values[-1]+x_step
y=self.y_values[-1]+y_step
self.x_values.append(x)
self.y_values.append(y)
该示例中使用方法fill_walk()来生成漫步包含的点并决定每次漫步的方向,在方法fill_walk()中主要是告诉python如何模拟四种漫步决定:向右走还是向左走?沿指定的方向走多远?向上走还是向下走&#