from random import choice
class RandomWalk():
def __init__(self,num_points=5000):
self.num_points = num_points
self.x_values = [0]
self.y_values = [0]
def get_step(self):
direction = choice([-1, 1])
distance = choice([0, 1, 2.3, 4])
step = direction * distance
return step
def fill_walk(self):
while len(self.x_values)<self.num_points:
x_step = self.get_step()
y_step = self.get_step()
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)
这是随机漫步的代码,用到了matplotlib的包,
import matplotlib.pyplot as plt
from random_walk import RandomWalk
#只要程序处于活跃状态,就不断地运行模拟随机漫步
while True:
rw = RandomWalk()
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,
s=15)
plt.scatter(0,0, c="red", s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c="red",s=100)
plt.show()
keep_running = input("Make another walk?(y/n):")
if keep_running == "n":
break