随机行走(Python实现)

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

null

无聊的理论已经够了。让我们休息一下,了解一下代码。所以,为了编写出随机游动的代码,我们基本上需要python中的一些库,一些用于进行数学运算,另一些用于绘制曲线。

图书馆

  • matplotlib 它是一个外部库,可以帮助您绘制曲线。要安装此库,请在cmd中键入以下代码。
pip install matplotlib

这就足够让你完成安装了。

  • 努比 它也是python中的一个外部库,可以帮助您处理数组和矩阵。要安装库,请在cmd中键入以下代码。
pip install numpy
  • 随机的 这是一个内置的python库,我们将使用它生成随机点。

一维随机游动 随机游动的一个基本例子是整数线上的随机游动,从0开始,每一步移动+1或?1的概率相等。

所以,让我们尝试在python中实现一维随机游走。

Python3

# Python code for 1-D random walk.
import random
import numpy as np
import matplotlib.pyplot as plt
# Probability to move up or down
prob = [ 0.05 , 0.95 ]
# statically defining the starting position
start = 2
positions = [start]
# creating the random points
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)
# plotting down the graph of the random walk in 1D
plt.plot(positions)
plt.show()


输出:

图片[1]-随机行走(Python实现)-yiteyi-C++库

更高维度 在更高的维度中,随机行走点集具有有趣的几何特性。事实上,我们得到了一个离散的分形,也就是说,一个在大尺度上表现出随机自相似性的集合。在小范围内,人们可以观察到行走时所使用的网格产生的“锯齿”。下面提到的两本劳勒的书是关于这个话题的好资料。随机行走的轨迹是到访点的集合,被视为一个集合,不考虑行走何时到达该点。在一维中,轨迹就是行走所达到的最小高度和最大高度之间的所有点(平均而言,两者都在?n的量级上)。

让我们尝试在2D中创建一个随机行走。

Python3

# Python code for 2D random walk.
import numpy
import pylab
import random
# defining the number of steps
n = 100000
#creating two array for containing x and y coordinate
#of size equals to the number of size and filled up with 0's
x = numpy.zeros(n)
y = numpy.zeros(n)
# filling the coordinates with random variables
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
# plotting stuff:
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()


输出:

图片[2]-随机行走(Python实现)-yiteyi-C++库

应用

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

工具书类 1. 维基百科——随机行走 2. Stackoverflow–随机行走1D 3. matplotlib文档 本文由 Subhajit Saha .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享