为了模拟随机漫步,将创建一个名为RandomWalk的类随机选择前进方向,需要三个属性
- 储存随机漫步次数的变量
- 储存随机漫步经过的每个点的x坐标
- 储存随机漫步经过的每个点的y坐标
该类只包含两个方法,__init__()
和fill_work
,后者计算的是随机漫步经过的所有的点。
random.py
from random import choice
class RandomWalk:
""""used to produce randomwalk"""
def __init__(self, num_points=5000):
"""initialize properties of randomwalk"""
self.num_points = num_points
"""all walks start at (0,0)"""
self.x_values = [0]
self.y_values = [0]
def fill_work(self):
"""calculate the number of points involved in randomwalk"""
# keep walking until gets referred length
while len(self.x_values) < self.num_points:
"""choose a value for x_direction for either left 1 or right 1 (direction)"""
x_direction = choice([1, -1])
"""choose the walk length, including 0 allows moving toward y-axis"""
x_distance = choice([0, 1, 2, 3, 4])
"""relative position changes"""
x_step = x_distance * x_direction
y_direction = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4])
y_step = y_distance * y_direction
"""do not stay stationary"""
if x_step == 0 and y_step == 0:
continue
"""calculate x and y for next point"""
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)
Visual
import matplotlib.pyplot as plt
from random_walk import RandomWalk
while True:
rw = RandomWalk()
rw.fill_work()
point_nums = list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_nums,
cmap=plt.cm.Reds, edgecolors='none', s=15)
plt.show()
keep_running = input(" you want to do it again babe?")
if keep_running == "no":
break
extra:
调整尺寸:分辨率和高和宽。
plt.figure(dpi=128, figsize=(10, 6))
隐藏坐标轴:
plt.axes().get_xaxis().set_visible(False)