Python 随机漫步
hacker707 人气:0创建RandomWalk类
为模拟随机漫步,我们将创建一个RandomWalk类,随机选择前进方向,这个类有三个属性,一个存储随机漫步的次数,另外两个存储随机漫步的每个点的x,y坐标,每次漫步都从点(0,0)出发
from random import choice class RandomWalk(): '''一个生成随机漫步数据的类''' def __init__(self,num_points=5000): '''初始化随机漫步的属性''' self.num_points = num_points # 所有随机漫步都始于(0,0) self.x_values = [0] self.y_values = [0]
选择方向
我们将使用fill_walk()来生成随机漫步包含的点,并决定每次漫步的方向。并将其添加到random_walk.py中 改正代码如下:
from random import choice class RandomWalk(): '''一个生成随机漫步数据的类''' def __init__(self, num_points=5000): '''初始化随机漫步的属性''' self.num_points = num_points # 所有随机漫步都始于(0,0) self.x_values = [0] self.y_values = [0] 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)
绘制随机漫步图
下面的代码将随机漫步的所有点都绘制出来,将文件命名为rw_visual.py
import matplotlib.pyplot as plt from random_walk import RandomWalk # 创建一个RandomWalk实例,并将其包含的点都绘制出来 rw = RandomWalk() rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=10) plt.show()
模拟多次随机漫步
每次随机漫步都不同,因此每次生成的各种模式也很有趣,要在不多次运行程序的情况下,进行随机漫步,可以把代码放入一个while循环中,每次关闭matplotlib查看器,系统会询问你是否再次模拟随机漫步(输入y将再次进行随机漫步,输入n将结束程序) 改进代码如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程序处于活动状态,就不断模拟随机漫步 while True: # 创建一个RandomWalk实例,并将其包含的点都绘制出来 rw = RandomWalk() rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=10) plt.show() keep_running = input("make another walk? (y/n):") if keep_running.upper() == 'N': break
每次随机漫步都不同,就如人的一生每走一步都会有不同的经历
加载全部内容