为了实现随机漫步,我们需要做以下三件事:
在漫步模拟中,我们需要定义一个起点,并以随机方式进行步行。步数是程序决定的,但通常为1000步。随机漫步的过程是随机地选择将向上、向下、向左或向右前进。我们来看一个例子:
首先,定义一个名为RandowWalk的类。
class RandomWalk:
"""生成一个随机漫步数据的类。"""
def __init__(self, num_points=5000):
"""初始化属性"""
self.num_points = num_points
# 所有随机漫步都始于(0, 0)
self.x_values = [0]
self.y_values = [0]
在这个类中,我们定义了一个名为__init__
的方法,该方法负责初始化随机漫步的所有属性。首先,它将步数设置为默认值5000,然后创建两个列表,分别命名为x_values
和y_values
,用于存储所有漫步中点的x坐标和y坐标值,初始值均设置为0,因为随机漫步总是从原点开始。
接下来,我们创建方法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值
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)
在fill_walk()
方法中,我们使用while循环,从初始点开始随机漫步,直到漫步达到指定数量num_points
。 每次循环时,我们生成step_size和step_direction的随机值,然后给定这些值移动到新的点,并将该点添加到x_values
和y_values
列表中。当移动到新点后,漫步程序会计算下一个点的x和y值,然后将它们添加到漫步中。最后,我们设置了一条规则,如果步数为0则不移动。
# 创建一个实例,并开始漫步
rw = RandomWalk()
rw.fill_walk()
# 可视化结果
plt.scatter(rw.x_values, rw.y_values, s=15)
plt.show()
首先,我们创建了一个名为rw
的RandomWalk实例,并使用fill_walk()
方法填充漫步点。紧接着,我们使用scatter()
方法将结果可视化。散点图显示在程序侧。
最后,我们使用matplotlib库把我们的数据可视化出来。
import matplotlib.pyplot as plt
# 设置绘制的图形尺寸
plt.figure(dpi=128, figsize=(10, 6))
# 绘制散点图
plt.scatter(rw.x_values, rw.y_values, s=15, c=list(range(rw.num_points)), cmap=plt.cm.Blues)
# 突出起点和终点
plt.scatter(0, 0, c='green', s=100)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', s=100)
plt.show()
我们使用了figure()
方法来设置绘图对象的大小和分辨率。接下来,我们使用scatter()
方法分散漫步点,并通过cmap
参数使之具备颜色映射效果。最后,我们使用scatter()
方法再次绘制初始点和终点,并将它们突出显示。
这就是Python实现随机漫步的完整攻略,希望对你有所帮助。
本文链接:http://task.lmcjl.com/news/13519.html