Python實(shí)現(xiàn)隨機(jī)游走的示例代碼
隨機(jī)游走是一個(gè)數(shù)學(xué)對(duì)象,稱為隨機(jī)或隨機(jī)過程,它描述了一條路徑,該路徑由一些數(shù)學(xué)空間(如整數(shù))上的一系列隨機(jī)步驟組成。隨機(jī)游走的一個(gè)基本例子是整數(shù)線上的隨機(jī)游走,它從0開始,每一步以相等的概率移動(dòng)+1或-1。其他例子包括分子在液體或氣體中行進(jìn)時(shí)的路徑,覓食動(dòng)物的搜索路徑,波動(dòng)股票的價(jià)格和賭徒的財(cái)務(wù)狀況都可以通過隨機(jī)行走模型來近似,即使它們?cè)诂F(xiàn)實(shí)中可能不是真正的隨機(jī)。
如這些例子所示,隨機(jī)游走在許多科學(xué)領(lǐng)域都有應(yīng)用,包括生態(tài)學(xué)、心理學(xué)、計(jì)算機(jī)科學(xué)、物理學(xué)、化學(xué)、生物學(xué)以及經(jīng)濟(jì)學(xué)。隨機(jī)游走解釋了在這些領(lǐng)域中觀察到的許多過程的行為,因此可以作為記錄隨機(jī)活動(dòng)的基本模型。作為更數(shù)學(xué)的應(yīng)用,pi的值可以通過在基于代理的建模環(huán)境中使用隨機(jī)游走來近似。
別再說無聊的理論了。讓我們休息一下,同時(shí)了解一些代碼知識(shí)。所以,為了編碼隨機(jī)游走,我們基本上需要一些Python庫,一些用來做數(shù)學(xué),另一些用來繪制曲線。
所需庫
random
numpy
matplotlib
一維隨機(jī)游走
一維隨機(jī)游走的一個(gè)基本例子是整數(shù)線上的隨機(jī)游動(dòng),它從0開始,每一步移動(dòng)+1或-1、概率相等。
# 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()
輸出
二維隨機(jī)游走
在高維數(shù)中,隨機(jī)游走點(diǎn)的集合具有有趣的幾何性質(zhì)。事實(shí)上,人們得到了一個(gè)離散的分形,即在大尺度上表現(xiàn)出隨機(jī)自相似性的集合。在小尺度上,可以觀察到由執(zhí)行行走的網(wǎng)格產(chǎn)生的“鋸齒狀”。隨機(jī)游走的軌跡是所訪問的點(diǎn)的集合,被認(rèn)為是一個(gè)集合,而不考慮游走何時(shí)到達(dá)該點(diǎn)。在一個(gè)維度中,軌跡只是行走所達(dá)到的最小高度和最大高度之間的所有點(diǎn)。
# 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()
輸出
應(yīng)用領(lǐng)域
在計(jì)算機(jī)網(wǎng)絡(luò)中,隨機(jī)游走可以對(duì)在服務(wù)器處緩沖的傳輸分組的數(shù)量進(jìn)行建模。
在群體遺傳學(xué)中,隨機(jī)游走描述了遺傳漂變的統(tǒng)計(jì)特性。
在圖像分割中,隨機(jī)游走被用于確定標(biāo)簽(即,“對(duì)象”或“背景”)以與每個(gè)像素相關(guān)聯(lián)。
在大腦研究中,隨機(jī)游走和強(qiáng)化隨機(jī)游走被用來模擬大腦中神經(jīng)元放電的級(jí)聯(lián)。
隨機(jī)游走也被用于對(duì)諸如在線社交網(wǎng)絡(luò)之類的大規(guī)模在線圖進(jìn)行采樣。
到此這篇關(guān)于Python實(shí)現(xiàn)隨機(jī)游走的示例代碼的文章就介紹到這了,更多相關(guān)Python隨機(jī)游走內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python的Tornado框架的異步任務(wù)與AsyncHTTPClient
Tornado的奧義就在于異步處理來提高單線程的Python程序執(zhí)行性能,這里我們就來詳解Python的Tornado框架的異步任務(wù)與AsyncHTTPClient,需要的朋友可以參考下2016-06-06python修改注冊(cè)表終止360進(jìn)程實(shí)例
這篇文章主要介紹了python修改注冊(cè)表終止360進(jìn)程實(shí)例,是非常實(shí)用的進(jìn)程操作技巧,需要的朋友可以參考下2014-10-10簡(jiǎn)單談?wù)凱ython中函數(shù)的可變參數(shù)
和C語言一樣,Python中也有可變參數(shù)函數(shù),即一個(gè)函數(shù)可以接收多個(gè)參數(shù),而這些參數(shù)的個(gè)數(shù)在函數(shù)調(diào)用之前事先是不知道的。下面這篇文章我們來介紹下python中的可變參數(shù)2016-09-09Tornado協(xié)程在python2.7如何返回值(實(shí)現(xiàn)方法)
下面小編就為大家?guī)硪黄猅ornado協(xié)程在python2.7如何返回值(實(shí)現(xiàn)方法)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06python實(shí)現(xiàn)網(wǎng)頁錄音效果
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)頁錄音效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10Python+Appium實(shí)現(xiàn)自動(dòng)化清理微信僵尸好友的方法
這篇文章主要介紹了Python+Appium實(shí)現(xiàn)自動(dòng)化清理微信僵尸好友的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02