1. 程式人生 > >Python3——隨機漫步生成資料並繪製

Python3——隨機漫步生成資料並繪製

Python隨機漫步生成資料並繪製

random_walk.py

from random import choice
#生成隨機漫步的資料類
class RandomWalk():
    def __init__(self,num_points=5000):   #初始化隨機漫步的屬性
        self.numpoints=num_points     #隨機漫步的預設點數
        self.x_values=[0]                   #所有的隨機漫步都始於(0.0)
        self.y_values=[0]
    def fill_walk(self):
        while len(self.x_values)<self.numpoints:
            #決定前進方向及前進方向的距離
            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
            #計算下一個點的x和y的值
            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_visual.py

import matplotlib.pyplot as plt
from random_walk import RandomWalk

# 建立一個RandomWalk例項,並將其包含的點都繪製出來
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=15)
#重新繪製起點和終點(突出起點和終點)
plt.scatter(0,0,c='green',edgecolors='none',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c="red",edgecolors='none',s=100)
#隱藏座標軸
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
#設定視窗的螢幕解析度和尺寸
plt.figure(dpi=128,figsize=(10,6))
plt.show()

結果圖: