隨機漫步 random walk

2021-07-04 10:44:45 字數 2024 閱讀 2316

有一類問題總稱為「隨機漫步」(random walk)問題,這類問題長久以來吸引著數學界的興趣。所有這些問題即使是最簡單的解決起來也是極其困難的。而且它們在很大程度上還遠沒有得到解決。乙個這樣的問題可以描述為:

在矩形的房間裡,鋪有n×m塊瓷磚,現將乙隻(醉酒的)蟑螂放在地板中間乙個指定方格裡。蟑螂隨機地從一塊瓷磚「漫步」到另一塊瓷磚(可能是在找一片阿司匹林)。假設它可能從其所在的瓷磚移動到其周圍八塊瓷磚中的任何乙個(除非碰到牆壁),那麼它把每一塊瓷磚都至少接觸一次將花費多長時間?

雖然這個問題可能很難用純粹的概率技術來解決,但是使用計算機的話卻十分容易。使用計算機解決此問題的技術稱為「模擬」。這種技術廣泛應用於工業中,用來**運輸流量,存貨控制等等。該問題可以採用如下方式進行模擬:

用乙個n×m的陣列作為計數器來表示蟑螂到達每一塊瓷磚的次數,每個陣列單元的初始化均置為零。蟑螂在地板上的位置用座標(currentr,currentc)表示。蟑螂的八種可能移動用在位置(nextr = currentr + imove[k],nextc = currentc + jmove[k])的瓷磚表示,其中0≤k≤7,並且

imove[0] = -1; jmove[0] = 1;   //東北方

imove[1] = 0; jmove[1] = 1;   //正東方

imove[2] = 1; jmove[2] = 1;   //東南方

imove[3] = 1; jmove[3] = 0;   //正南方

imove[4] = 1; jmove[4] = -1;  //西南方

imove[5] = 0; jmove[5] = -1;  //正西方

imove[6] = -1; jmove[6] = -1;  //西北方

imove[7] = -1; jmove[7] = 1;   //正北方

蟑螂向其相鄰的八個方格的隨機漫步通過產生乙個隨機數值k(0≤k≤7)來模擬。當然,蟑螂不能爬出房間外,所以應該去掉通往牆壁的座標並形成乙個新的隨機組合。蟑螂每次進入乙個方格,該方格的計數器就增加1,從而計數器的乙個非零元素就表示蟑螂到達對應方格的次數。每當乙個方格被至少進入一次時,試驗就完成了。

程式必須滿足:

①能夠處理所有的n和m值, n和m滿足:2②能夠對「n = 15,m = 15,起始點為(10,10)」和「n = 39,m = 19,起始點為(1,1)」進行實驗。

③具有迭代限制,即實驗過程中蟑螂進入方塊的最大次數為max =50000時,程式能夠終止。

對於每次試驗,列印:

①蟑螂進行的合法移動的總次數。

②最終的計數器陣列,顯示出漫步的「密度」,即輸出在實驗中每一塊瓷磚被接經過的次數。

#include #include #include using namespace std;

int const max_length = 100;

int random(int m,int n) //指定範圍內隨機數

else //表示取區間[n,m]內的數字

}int rmove[8],cmove[8]; //移動方位陣列

void initmove(int* imove,int* jmove) //初始化移動方位陣列

bool judgewalk(int* mark,int n,int m) //判斷是否訪問完所有瓷磚

}return true;

}void printwalk(int* mark,int n,int m) //列印所有瓷磚訪問次數

cout << endl;

}}void randomwalk(int** mark,int n,int m) //隨機漫步

mark[nextr][nextc]++; //訪問+1

currentr = nextr;

currentc = nextc; //下一位置等於當前位置

num++;

if(judgewalk(mark,n,m)) //判斷是否訪問完所有瓷磚

if(num > 50000000) //超出訪問上限次數

}}int main()

python隨機漫步 Python 隨機漫步

建立randomwalk 類 我們將使用python來生成隨機漫步資料,再使用matplotlib以引入矚目的方式將這些資料呈現出來 首先建立類randomwalk from random importchoiceclassrandomwalk 乙個生成隨機漫步資料的類 def init self,...

Python matplotlib隨機漫步

隨機漫步的最大距離 self.num poimts num points 隨機漫步的 腳步 self.x 0 self.y 0 def fill walk self 生成隨機漫步的腳印 while len self.x self.num poimts 前進方向 x direction choice ...

Python隨機漫步

隨機漫步,顧名思義,每一步都是隨機的,假設有乙個點,下一步往 走,往上?往下?往左還是右?走多遠?這些都沒有明確的表示,完全是隨機的,最後走到 是由一系列隨機決策決定的。這就是隨機漫步。那麼使用python怎麼樣模擬隨機漫步呢 首先我們需要建立乙個類,這個類需要具備三個屬性,1.隨機漫步多少次?2,...