实现小规模随机数据漫步
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 fill_walk(self):
#不断漫步,直到到大指定距离
while len(self.x_values) < self.num_points:
#决定前进方向以及距离
x_derection = choice([1, -1])
x_distance = choice([0, 1, 2, 3, 4])
x_step = x_derection * x_distance
y_derection = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4])
y_step = y_derection * y_distance
#拒绝原地踏步
if x_step == 0 and y_step == 0:
continue
next_xvalues = self.x_values[-1] + x_step
next_yvalues = self.y_values[-1] + y_step
self.x_values.append(next_xvalues)
self.y_values.append(next_yvalues)
import matplotlib.pyplot as plt
from Rabdom_Walk import RandomWalk
while True:
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=2)
plt.show()
keep_running = input("u sure to try another random_walking?(y/n)")
if keep_running == 'n':
break
运行结果如图:
略微修改可以模拟花粉在水上的运功:
plt.plot(rw.x_values, rw.y_values)