隨機漫步理論–python手把手講解
隨機漫步理論是由Karl Pearson 于1905年提出的,它是一種變化形式,在運動程序中每一步都是隨機,沒有明確的方向,這個在自然界、物理學、生物學、化學和經濟學中都有實際用途,比如說漂浮在水滴上的花粉的運動是隨機,因此他的路徑可以像隨機漫步模型,
接下里我就用python來模擬這個程序,并且用注釋的方式手把手講解這個程序,
首先我們先建立一個叫RandomWalk 的類,它的功能是隨機選著前進的方向,這主要有三點,一個是走多少步,向哪個方向走(x軸,y軸)
from random import choice#應用隨機模塊
class RandomWalk:#用于生成隨機漫步的資料
def __init__(self, num_points=5000):
"""這里做了一個函式,我們假設我們需要走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:
# Decide which direction to go and how far to go in that direction.
x_direction = choice([1, -1])
#每次不是向右走加1,就是向左走-1
x_distance = choice([0, 1, 2, 3, 4])
#這是一個選擇5個步數任意一個,來決定這個點走多少步
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
# 如果出現兩次都是0的情況況要重新執行
if x_step == 0 and y_step == 0:
continue
# 這里計算下一個漫步的點
x = self.x_values[-1] + x_step
y = self.y_values[-1] + y_step
self.x_values.append(x)
self.y_values.append(y)
接下來我們就要開始繪制隨機漫步圖了
import numpy as np
import matplotlib.pyplot as plt
#這里參考的兩大最常用的資料分析函式我就不多提了
from random_walk import RandomWalk
#把上面我們做的漫步類引進來,這里我們單獨創建一個檔案了,上面那個存在另一個檔案,這里把兩個檔案放在同一個檔案夾下
#這里用了一個回圈,讓程式不斷地模擬,后面再設定中斷
while True:
#創建一個RandomWalk實體
rw = RandomWalk(50_000)
rw.fill_walk()
# 把所有的漫步的點都畫出來
plt.style.use('classic')
fig, ax = plt.subplots(figsize=(15, 9))
point_numbers = range(rw.num_points)
ax.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues,
edgecolors='none', s=1)#畫出散點圖
# 這里我隱藏了坐標,方便你全心去觀察他們的影像移動
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.show()
keep_running = input("Make another walk? (y/n): ")
if keep_running == 'n':
#對應前面的無限回圈,只有你下了n指令才會終止
break
這個是最后模擬的影像

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254408.html
標籤:python
