介绍 随机游动是一种数学对象,称为随机或随机过程,它描述了一条路径,该路径由一些数学空间(如整数)上的一系列随机步骤组成。随机游动的一个基本例子是整数线上的随机游动,它从0开始,每一步以相等的概率移动+1或-1。其他例子包括分子在液体或气体中移动时所追踪的路径、觅食动物的搜索路径、波动股票的价格和赌徒的财务状况都可以用随机游走模型来近似,尽管它们在现实中可能不是真正的随机。如这些例子所示,随机游动在许多科学领域都有应用,包括生态学、心理学、计算机科学、物理学、化学、生物学以及经济学。随机游动解释了这些领域中许多过程的观测行为,因此可以作为记录的随机活动的基本模型。作为一个更数学化的应用,pi的值可以通过在基于agent的建模环境中使用随机游走来近似。
无聊的理论已经够了。让我们休息一下,了解一下代码。所以,为了编写出随机游动的代码,我们基本上需要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() |
输出:
更高维度 在更高的维度中,随机行走点集具有有趣的几何特性。事实上,我们得到了一个离散的分形,也就是说,一个在大尺度上表现出随机自相似性的集合。在小范围内,人们可以观察到行走时所使用的网格产生的“锯齿”。下面提到的两本劳勒的书是关于这个话题的好资料。随机行走的轨迹是到访点的集合,被视为一个集合,不考虑行走何时到达该点。在一维中,轨迹就是行走所达到的最小高度和最大高度之间的所有点(平均而言,两者都在?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() |
输出:
应用
- 在计算机网络中,随机游动可以模拟服务器上缓冲的传输数据包的数量。
- 在群体遗传学中,随机游走描述了遗传漂变的统计特性。
- 在图像分割中,随机游动用于确定与每个像素关联的标签(即“对象”或“背景”)。
- 在大脑研究中,随机游动和强化随机游动被用来模拟大脑中神经元的级联放电。
- 随机游动也被用于对在线社交网络等海量在线图表进行采样。
工具书类 1. 维基百科——随机行走 2. Stackoverflow–随机行走1D 3. matplotlib文档 本文由 Subhajit Saha .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。