随机漫步理论–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
这个是最后模拟的图像