''' 随机漫步 ''' import matplotlib.pyplot as plt from random import choice class RandomWail(): ''' 生成一个随机漫步的数据 ''' def __init__(self,num_points=50000): self.num_points = num_points 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 #计算下一个点的值 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 = RandomWail() # rw.fill_walk() # plt.scatter(rw.x_values, rw.y_values, s=16) # plt.show() ''' 命令生成漫步图 ''' while True: rw = RandomWail() rw.fill_walk() ''' 画布大小 ''' plt.figure(figsize=(10,10)) ''' 给点上色 ''' point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Reds,edgecolors='none',s=1) ''' 突出起点和重点 ''' plt.scatter(0,0,c='green',edgecolors='none',s=100) plt.scatter(rw.x_values[-1],rw.y_values[-1],c='yellow',edgecolors='none',s=100) ''' 隐藏坐标轴 ''' plt.axes().get_xaxis().set_visible(False) plt.axes().get_yaxis().set_visible(False) plt.show() keep_running = input("Make another walk?(Y/N):") if keep_running == 'N': break
第三课--随机漫步
关注
打赏