from random import choice import matplotlib.pyplot as plt class RandomWalk(): """随机漫步的类,三个参数:1,移动的步数;2,x的坐标点;3,y的坐标""" def __init__(self,floots=5000): self.floots=floots self.x_values=[0] self.y_values=[0] def fill_walk(self): """计算随机漫步所有的点""" while len(self.x_values)<self.floots: 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 #计算下一步的位置 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) while True: rw =RandomWalk(5000) rw.fill_walk() #设置绘制窗口尺寸 plt.figure(dpi=128,figsize=(10,6)) plt.scatter(rw.x_values,rw.y_values,s=15,c=(0.9,0.2,0.6)) plt.scatter(0,0,c=(0,0,1),s=100) #标记起点 plt.scatter(rw.x_values[-1],rw.y_values[-1],c=(1,0,0),s=100) #标记终点 #隐藏坐标轴 plt.axes().get_xaxis().set_visible(False) plt.axes().get_yaxis().set_visible(False) plt.show() keep_runing=input("(Y/N):") if keep_runing.lower()=='n': break