📜  随机游走(Python实现)

📅  最后修改于: 2020-05-14 04:37:04             🧑  作者: Mango

介绍随机游走是一种数学对象,称为随机过程,它描述的路径由某些数学空间(例如整数)上的一系列随机步骤组成。随机游动的一个基本示例是整数行上的随机游动,它从0开始,并且在每一步以相等的概率移动+1或-1。其他示例包括分子在液体或气体中行进时所跟踪的路径,觅食动物的搜索路径,波动的股票价格以及赌徒的财务状况,所有这些都可以通过随机行走模型来近似,甚至尽管实际上它们可能并不是真正随机的。如这些示例所示,随机游走可应用于许多科学领域,包括生态学,心理学,计算机科学,物理学,化学,生物学以及经济学。随机游走解释了在这些领域中观察到的许多过程的行为,因此可以作为记录的随机活动的基本模型。作为更数学的应用,可以通过在基于代理的建模环境中使用随机游走来近似pi的值。

因此,要编码出随机游走,我们基本上将需要Python中的一些库来进行数学运算,而另一些库来绘制曲线
所需库:
1,matplotlib它是一个外部库,可帮助您绘制曲线。要安装此库,请在cmd中键入以下代码。

pip install matplotlib

这足以使您完成安装。

2,numpy它也是Python中的一个外部库,它可以帮助您处理数组和矩阵。要安装该库,请在cmd中键入以下代码。

pip install numpy

3,random这是Python的内置库,我们将使用它来生成随机点。

一维随机游动的一个基本示例是整数行上的随机游动,该整数游动从0开始,并在每一步以相等的概率移动+1或-1。
因此,让我们尝试在Python中实现一维随机游走。

# 一维随机游走的Python代码.
import random
import numpy as np
import matplotlib.pyplot as plt
# 上下移动的可能性
prob = [0.05, 0.95]
# 静态定义起始位置
start = 2
positions = [start]
# 创建随机点
rr = np.random.random(1000)
downp = rr < prob[0]
upp = rr > prob[1]
for idownp, iupp in zip(downp, upp):
    down = idownp and positions[-1] > 1
    up = iupp and positions[-1] < 4
    positions.append(positions[-1] - down + up)
# 绘制一维随机游动图
plt.plot(positions)
plt.show()

输出:

1, 在更高的尺寸中,一组随机行走的点具有有趣的几何特性。实际上,人们得到了一个离散的分形,即一个在大范围内表现出随机自相似性的集合。在小范围内,人们可以观察到由于走动的网格导致的“锯齿状”。下面引用的两本Lawler书籍是有关此主题的很好资料。随机行走的轨迹是所访问点的集合,被视为一个集合,而与行走何时到达该点无关。在一个维度上,轨迹只是步行所达到的最小高度和最大高度之间的所有点(两者均平均约为ηn)。

让我们尝试在2D中创建随机游走。

# 二维随机游走的Python代码.
import numpy
import pylab
import random
# 定义步骤数
n = 100000
# 创建两个数组以包含x和y坐标,其大小等于大小数,并用0填充
x = numpy.zeros(n)
y = numpy.zeros(n)
# 用随机变量填充坐标
for i in range(1, n):
    val = random.randint(1, 4)
    if val == 1:
        x[i] = x[i - 1] + 1
        y[i] = y[i - 1]
    elif val == 2:
        x[i] = x[i - 1] - 1
        y[i] = y[i - 1]
    elif val == 3:
        x[i] = x[i - 1]
        y[i] = y[i - 1] + 1
    else:
        x[i] = x[i - 1]
        y[i] = y[i - 1] - 1
# 密谋:
pylab.title("Random Walk ($n = " + str(n) + "$ steps)")
pylab.plot(x, y)
pylab.savefig("rand_walk"+str(n)+".png",bbox_inches="tight",dpi=600)
pylab.show()

输出:

应用领域

  1. 在计算机网络中,随机游走可以模拟服务器中缓冲的传输数据包的数量。
  2. 在种群遗传学中​​,随机游走描述了遗传漂移的统计特性。
  3. 在图像分割中,随机游走用于确定与每个像素关联的标签(即“对象”或“背景”)。
  4. 在大脑研究中,随机行走和强化随机行走用于模拟大脑中神经元放电的级联。
  5. 随机游走也已被用来采样大量的在线图,例如在线社交网络。