01rw_visual.py
# __author__ = 'lzc'
# -*- coding: UTF-8 -*-
import matplotlib
import matplotlib.pyplot as plt
from random_walk import walk
'''
随机漫步数据
建一个Random_walk类,随机的选择前进的方向,一共有三个属性:
一个是存储随机漫步次数的变量,
其他两个是列表,分别存储随机漫步经过的每个点的x和y坐标
'''
#实例化类
mum_points=5000 #运行次数
rw = walk(mum_points)
rw.fill_walk()
#设置窗口的大小
plt.figure(figsize=(12,6))
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
#s点的粗细,edgecolors='none'删除数据点的轮廓,c为颜色设置
colorNum= list(range(rw.mum_points))
#突出起点和中点
plt.scatter(0,0,c='green',edgecolors='none',s=100)
plt.scatter(rw.x_value[-1],rw.y_value[-1],c='blue',edgecolors='none',s=100)
plt.scatter(rw.x_value,rw.y_value,c=colorNum,edgecolors='none',s=15)
plt.title('Square Numbers',fontsize=14) #标题
plt.xlabel('x轴',fontsize=14) #x轴标题
plt.ylabel('y轴',fontsize=14)#y轴标题
plt.show()
random_walk.py
# __author__ = 'lzc'
# -*- coding: UTF-8 -*-
from random import choice
class walk():
def __init__(self,mum_points):
self.x_value=[0]
self.y_value=[0]
self.mum_points=mum_points #运行次数
def fill_walk(self):
#不断漫步
while len(self.x_value) < self.mum_points:
x_direction = choice([1,-1]) #choice在列表中随机选择,1表示向右,-1表示向左
x_distance = choice([0,1,2,3,4,5]) # y轴方向
x_step=x_direction * x_distance
y_direction = choice([1,-1]) #choice在列表中随机选择,1表示向右,-1表示向左
y_distance = choice([0,1,2,3,4]) # y轴方向
y_step=y_direction * y_distance
#拒绝原地踏步
if x_step == 0 and y_step==0:
continue
#计算下一个点的值
next_x = self.x_value[-1] + x_step
next_y = self.y_value[-1] + y_step
#print(x_value[-1])
self.x_value.append(next_x)
self.y_value.append(next_y)