📅  最后修改于: 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()
输出:
应用领域