91、随机漫步

2017-11-04  本文已影响0人  陈容喜

我们将使用Python来生成随机漫步数据,再使用matplotlib将这些数据呈现出来。随机漫步的路径是这样的:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的。

1.创建RandomWalk() 类

为模拟随机漫步,我们将创建一个名为RandomWalk 的类,它随机地选择前进方向。这个类需要三个属性,其中一个是存储随机漫步次数的变量,其他两个是列表,分别存储随机漫步经过的每个点的 x 和 y 坐标。

其中RandomWalk 类只包含两个方法:__init__() 和fill_walk() ,其中后者计算随机漫步经过的所有点。

为做出随机决策,我们将所有可能的选择都存储在一个列表中,并在每次做决策时都使用choice() 来决定使用哪种选择。

类RandomWalk()是在random_walk.py模块中,具体代码如下:

91、随机漫步

代码第7行中num_points存储的是存储随机漫步次数,在这里设定默认值为5000;

第12和13行代码中self.x_values和self.y_values这两个列表里放的是点的x、y坐标,这里设定默认是从原点(0,0)开始。

2.选择方向

我们将使用fill_walk() 来生成漫步包含的点,并决定每次漫步的方向,如下所示。

91、随机漫步

第19行代码中我们建立了一个循环,这个循环不断运行,直到漫步包含所需数量的点。这个方法的主要部分告诉Python如何模拟四种漫步决定:向右走还是向左走?沿指定的方向走多远?向上走还是向下走?沿选定的方向走多远?

第21行我们使用choice()函数,choice() 方法返回一个列表,元组或字符串的随机项,意思就是每次从这个列表里随意选一个。

在这里choice([1, -1]) 给x_direction 选择一个值,结果要么是表示向右走的1,要么是表示向左走的-1。接下来,choice([0, 1, 2, 3, 4]) 随机地选择一个0~4之间的整数,告诉Python 沿指定的方向走多远(x_distance )。(通过包含0,我们不仅能够沿两个轴移动,还能够沿y 轴移动。)

代码的23和27行描述步数的计算方法,我们将移动方向乘以移动距离,以确定沿 x 和 y 轴移动的距离。如果x_step 为正,将向右移动,为负将向左移动,而为零将垂直移动;如果y_step 为正,就意味着向上移动,为负意味着向下移动,而为零意味着水平移动。如果x_step 和y_step 都为零,则意味着原地踏步,我们拒绝这样的情况,接着执行下一次循环。

第34到38行,为获取漫步中下一个点的 x 值,我们将x_step 与x_values 中的最后一个值相加,其中x_values[-1]表示查找列表x_values中最后一个数字,把这个数字加上步数得出下一个点的x坐标,对于 y 值也做相同的处理。获得下一个点的 x 值和 y 值后,我们将它们分别附加到列表x_values 和y_values 的末尾。

3.绘制随机漫步图

下面的代码将随机漫步的所有点都绘制出来:

91、随机漫步

我们首先导入了模块pyplot 和RandomWalk 类,然后创建了一个RandomWalk 实例(第7行代码),并将其存储到rw 中,再调用fill_walk() 。

在第9行代码,我们将随机漫步包含的x 和 y 值传递给scatter() ,函数scatter()利用提供的x和y坐标进行画图,在这里我们设定点的大小s=5。

两次运行结果如下:

91、随机漫步 91、随机漫步
上一篇 下一篇

猜你喜欢

热点阅读