隨機行走課程設計
① 「隨機行走」的解法
我的想法:
蟲子每次行動有4種可能,每種分別為1/4的概率。
有n個小△,專最快走完要n-1步,概率為屬1/4的n-1次方;
有3/4的概率會向前邁步,所以能走完的概率為3/4的n-1次方;
以此類推,原地不動的概率也為1/4的n-1次方;……
② 急求 應用隨機過程 這門課的 課程設計一份 200 分!
下面記a(i,j)為矩陣中第i行,第j列元素
1·i=1,j=1表示直到第n步最大數是1,第n+1步也是1
概率為1/6,j=2,3,……回,6的概率也答是1,所以
a(1,1)=a(1,2)=……=a(1,6)=1/6,如此類推a(2,2)=2/6,a(3,3)=3/6,
……a(6,6)=1,而當j>i時,a(i,j)=1/6,j<i時a(i,j)=0
可知一步轉移矩陣是上三角矩陣,對角線上元素分別為
1/6,2/6,……,1,右上方元素全是1/6
2·二步轉移矩陣等於一步轉移矩陣的平方,從中取適當的元素即可
3·記前n次最大值為i概率P(n=i)=(i/6)^n-[(i-1)/6]^n
當i<6,n趨向無窮大時P(n=i)=0,i=6時P(n=6)=1
即經過足夠多步過程後最終最大數i趨向於6
所以平衡矩陣前5列全為0,第六列全為1。。
③ 隨機行走的概率問題
先介紹點兒背景知識:Gambler's Ruin 問題(賭徒問題)
BTW:你都用了隨機行走這個詞了,我估計你知道,不過我還是介紹一下。
兩個賭徒A有a個硬幣,B有b個硬幣。
每一次,雙方均有1/2的可能性贏。
如果A贏,B就給A一個硬幣;如果B贏,A就給B一個硬幣。
直到某一方的硬幣全輸掉為止。
這個問題的解:
A最終輸掉的概率:b / (a+b)
B最終輸掉的概率:a / (a+b)
將賭徒問題看作隨機游動:
從 0 點開始,在 [-a,b] 的區間內隨機游動。
每一步,如果A贏,那麼往右移一格;如果B贏,那麼往左移一個。
直到到達 -a 或者 b 結束。
由賭徒問題的解,可知:
先到達 -a 的概率,也就是A輸:b / (a+b)
先到達 b 的概率,也就是B輸:a / (a+b)
============================================================
回到我們的問題。
1 和 4 對稱,2 和 3 對稱。我們先求停在 1 上的概率。
如果最後停在 1,說明在走到 1 之前,要走過所有的 2、3、4。
也就是說:從 0 點開始,在向右走到 1 之前,而要先向左走到 4、3、2。
歸納成隨機游動:從 0 點開始,要在到達 1 之前,先到達左側 3 個格子處。
也就相當於賭徒問題中,從 0 點開始,在 [-3,1] 之間隨機游動,先到達 -3。
這個概率是:1 / (1+3) = 1/4
這就是停在 1 上的概率。
由對稱性,停在 4 上的概率也是 1/4。
再由 2 和 3 的對稱性,停在它們上的概率是:(1 - 1/4 - 1/4) / 2 = 1/4
============================================================
我們還可以推廣一下。
假設有 n+1 個點:0、1、2、...、n,求停在任意一點 k (k 不為 0) 的概率。
最後停在 k,說明在走到 k 之前,要從 0 向右走過所有的 1、2、...、k-1,也要從 0 向左走過所有的 n、n-1、...、k+1
分兩種情況討論:(1) 先走到 k-1,後走到 k+1,和 (2) 先走到 k+1,後走到 k-1
這兩種情況相當於:從 0 開始,在 [-(n-k), k-1] 之間隨機游動,第(1)種情形相當於先走到 k-1,而第(2)種情形相當於先走到 n-k。所以:
先走到 k-1 的概率是:(n-k) / (n-1)
先走到 k+1 的概率是:(k-1) / (n-1)
由全概率公式:
Pr(最後停在k) = Pr(最後停在k | 先走到k-1) * Pr(先走到k-1) + Pr(最後停在k | 先走到k+1) * Pr(先走到k+1)
如果先走到 k-1(此時還未走到 k+1),並且最後停在 k,這就要求先向左走過 n-1 個格子到達 k+1,也就是在 [-(n-1), 1] 上隨機游動,先走到 -(n-1)。
所以:Pr(最後停在k | 先走到k-1) = 1 / n
如果先走到 k+1(此時還未走到 k-1),並且最後停在 k,這就要求先向右走過 n-1 個格子到達 k-1,也就是在 [1, n-1] 上隨機游動,先走到 n-1。
所以:Pr(最後停在k | 先走到k+1) = 1 / n
代入全概率公式:
Pr(最後停在k) = 1 / n
④ C語言數據結構編程 隨機走步問題
規定:
0-向左,(-1,0)
1-向右 (1, 0)
2-向上 ( 0, 1)
3-向上 (0, -1)
隨機函數, rand()
每次隨機一個方向 :t = rand()%4,
這樣就可以了,
求平回均數什麼的答,直接累計每個方向的次數就可以了
⑤ 用JAVA編寫二維隨機行走問題
public static void main(String[] args) {
// int[] a = new int[]{1,2,3,4};//1 2 3 4 代表上下左右移動
Random r = new Random();
int i = 100;
int[] avgs = new int[4];
Arrays.fill(avgs, 0);//給avgs賦值為0;
for(i = 100;i>0;i--){
int walk = r.nextInt(4)+1;
//這里就按得到的walk走
switch (walk) {
case 1:
//上走一步
avgs[0]++;
break;
case 2:
//下走一步
avgs[1]++;
break;
case 3:
//左走一步
avgs[2]++;
break;
case 4:
//右走一步
avgs[3]++;
break;
default:
//錯誤不走
break;
}
}
for(int j = 0;j<avgs.length;j++){
System.out.println(j+"方向走了多少步:"+avgs[j]+" ");
}
}
⑥ 什麼是隨機行走理論
隨機漫步理論——反技術圖表派的基礎 隨機漫步理論(Random Walk)認為,證券價格的波動是內隨機的, 像一個在容廣場上行走的人一樣,價格的下一步將走向哪裡, 是沒有規律的。 證券市場 中,價格的走向受到多方面因素的影響。 一件不起眼的小事也可能對市場產生巨大的影響。 從長時間的價格走勢圖上也可以看出, 價格的上下起伏的機會差不多是均等的。
⑦ 隨機遊走的無規則行走與擴散定律
無規則行走在任意尺度上都具有相似結構。例如一個在二維(d=2)格子上游動,每一定時間以相同概率移動到其相鄰位置,其軌跡即二維隨機軌跡,同樣可以擴展到三維。舉個例子,你取2 個硬幣一個1 分,一個5 分。你每五秒,將2 個硬幣擲一次,1 分硬幣用於左右移動標記,5 分硬幣用於前後移動標記,繪出路徑就是你的二維無規則行走。假如你走了1000 步那麼你回到起點的方式M0 有多少種?那麼么必須正反面各500 次。即,對一個特定投幣序列將投出正面的序號列出清單,清單包括500 個不同的整數這個量為:1000!/500!,而任意兩張清單只在元素存在換序的差異,則實際上並無區別所以必須除以可能的置換數500!。M0=1000!/(500!×500!),「!」表示階乘。回到原點的概率P0=M0/ M,這個概率滿足二項式分布。對於所有M 種可能可以用斯特林公式:lnM!≈M lnM-M + ½ln(2πM)。通過計算我們知道回到起點的概率很低。
要想找出第1000 步後你走了多遠,你可以列出1000 次投幣的結果序列然後對所有(x1000)的2次方 求平均,得到1000 步後的均方位置;這顯然太復雜,好在還有另外的方法。我們可以將所有2的N次方 種可能行走一一配對,每一配對由相同的x(N-1 );{(N-1)為x的下腳標}的兩個可能性相等的行走組成,只是最後一步不同。N 步隨機性走的均方位移比N-1 步大a的2次方,後者又比N-2 步大a的2次方,均方位移=Na的2次方。a 為格子間隔,每一個格子點上游動的可能方向有2d 個(d 是格子維數)單位時間內游動的方差為D=a2/(2d)t ,D 為擴散系數(一些參考書中也用字母K 表示,a後面的2為次方,後面凡數字在字母後面都表示指數)。對於一維無規則行走的均方位移隨時間線性增加2Kt,擴散常數D=a2/(2Δt)。這個邏輯可以推廣到二維和三維。 圖1.130 醉酒人的無規則行走 也許行走若干個步後他會回到出發點,但這樣的概率非常小。他離開酒吧的距離滿足擴散定律。 圖1.131 (a)二維無規則行走;(b)當步驟更多,步幅更低時二維無規則行走;(c)三維無規則行走。 擴散以一個初始分布釋放大量的無規則行走,觀察他們的密度就會得到分布函數。1855 年法國生理學家Fick 提出了描述擴散規律的基本公式— 菲克定律,在一維(如x 方向擴散的)粒子流密度(即單位時間內在單位截面上擴散的粒子流)J N 與粒子數密度梯度dc/dx成正比。擴散通量J=-D×(dc/dx),稱為菲克定律又稱擴散第一定律。進一步消掉J,找出濃度隨時間的變化關系dc/dt=D(d2c/dx2)其中2都是上角標,稱為菲克第二定律;在高等教材中可以寫成偏導的形式d 換成ә。
任何單次步驟不會遵從擴散定律,但只要等待足夠長的時間和步驟,便可精確預測無規則行走。布朗運動就是無規則行走這一現象的宏觀觀察。通過擴散定律我們將布朗運動的微觀參數(步長a 和間隔時間Δt)與宏觀實驗可觀測量(擴散常數D)建立了聯系。然而一個方程無法解出兩個未知量,測量K 不足以得到a 和Δt。這意味著還需要其他能夠說明摩擦與擴散定量聯系的公式。
擴散定律是跨學科的普適定律
對無規則行走的數學處理使用了過於簡化的假設,擴散定律是普適的,只要給定獨立隨機行走的某種分布,它就不依賴於具體的模型。漲落是隨機的、混沌的,無規則行走的結果就是擴散,這包括物質擴散、動量擴散、熱量擴散等。這也意味著結晶學、天文學、生物學、氣象學、流體力學、經濟學都將用到擴散定律。擴散定律是普適的,在這里我們作為一個結論而接受下來,具體的一系列數學證明過程給予舍棄。感興趣的朋友可以參見任何一本物理化學教材或分形教材。
擴散定律與守恆量
擴散是一個隨機漲落的過程,在本科一年級的物理課程已經提及一個落體最終會達到取決於摩擦的「末速度」。以懸浮顆粒來考慮摩擦,顆粒雖然受隨機碰撞,仍獲得了一個凈漂移速度。v=f/ζ ,ζ=2m/Δt 其中ζ是黏性摩擦系數,與擴散系數一樣可以實驗測量。摩擦源於物理實體與周圍熱致擾動的流體隨機碰撞。每一種顆粒當置於不同的溶劑中時都會有相應特徵D(擴散系數)和ζ。球體的黏性摩擦系數與尺寸間存在簡單關系,ζ=6πηR 斯托克斯(stokes)公式;R 是顆粒半徑,η是常數稱為流體黏度(水的黏度為10-3kg/ms)。由於有效步長a 和Δt 無法觀察,要想證實擴散與粘滯僅僅是熱運動的兩個方面,我們還需要第三個關系。愛因斯坦注意到a 和Δt 的關系,按照推到理想氣體定律的思路:(a/Δt)2=kBT/m,聯合起來就構成愛因斯坦第一擴散公式:ζD=kBT。這個關系由愛因斯坦在1905 年的碩士論文中得到,這表明顆粒位置的漲落與摩擦阻力相聯系,並且這個關系是定量普適的。越小的顆粒受到摩擦阻力越小,但擴散系數會更大,更容易擴散。ζD 的乘積提供了一個可證偽的預言來檢驗「熱即分子的無規則運動」;這個與預言提出不久就立刻被佩蘭(Jeans Perrin)和其他人的實驗所證實。任何無規則行走攜帶的守恆量都各自對應一個擴散定律。 無規則行走只是布朗運動的理想狀態
在很多系統都存在不同類型的無規則行走,他們都具有相似結構。單個的隨機事件我們不可預測,但隨機大量的群體行為,卻是精確可知的,這就是概率世界的魅力,在偶然中隱含著必然。隨機性造成了低尺度下的差異性,但在高尺度下又表現為共同的特徵的相似性。按照概率的觀點「宇宙即是所有隨機事件概率的總和」。 橢球體布朗運動相關研究
雖然無規則行走導致的擴散滿足以上的方程並有普適性,但假如這樣的的「無規則行走」某個方向,並不是完全隨機呢?以前面提到的投硬幣為例子,一個1 分,一個5 分,其中1 分硬幣破損使得正反面概率不相等,並且隨機若干步後,將1 分和5 分硬幣所代表的方向對調;那麼二維的無規則行走路徑必然發生改變。當年愛因斯坦的論文是探討球形顆粒的布朗運動,我們知道球形顆粒的旋轉並不影響他的平移,旋轉的非球形例子卻會影響它的平移。實際中,大量布朗運動的顆粒都是非球形的,所以更多的模型不得不考慮隨機轉動問題。其實即使對球形顆粒在黏性流體中,也要考慮隨機轉動產生的轉動摩擦系數對擴散的影響。
賓夕法尼亞大學的網站報道,研究人員用數字視屏顯微鏡觀察水中懸浮橢球體的隨機旋轉和移動。球形顆粒擴散分布將隨時間逐漸變寬,為高斯型濃度分布;而橢球顆粒不滿足高斯分布。隨著布朗運動的深入研究,越來越多的實驗表明布朗運動顆粒的行為與愛因斯坦一個世紀前的假設不同。2005 年10 月的物理評論快報,提到現在實驗室可以跟蹤布朗運動顆粒的測量精度達到微秒和納米的尺度。科學家們也發現活細胞的許多基本過程由布朗運動所驅動。試驗結果描述布朗運動的方程式偏離標准理論的,實際的布朗運動要比理想化的無規則行走要復雜。 圖1.132 橢球體在水中的布朗運動。 標準的無規則行走,色彩標記顯示出橢球的耦合方向和位移,並清楚的表明橢球的擴散其長軸比其短軸擴散更快。(此圖來源於賓夕法尼亞大學網站關於布朗運動的研究) 布朗運動是分形的典型例子,理想狀態下的布朗運動是高斯正態分布,當然更多的布朗運動研究細節我們不做探討。任何事物都不是孤立的,都是相互作用、相互聯系的。用還原論觀點將系統一個個隔離是對事物的理想化,是在一定程度上精確定量描述系統,當然這也是認識事物必經的步驟,但是有缺陷的。
哥德爾不完備定理,以及認識主體對客體的反映永遠存在這不完備性。我觀贊同哥本哈根學派的主張「自然科學不是自然界本身,而是人和自然界間關系的一部分,因而依賴人」。無論用還原論還是整體論都是用抽象去闡明物質的特性,這些抽象在任何時候僅僅是近似地、有條件的把握了物質的本質,不是世界的全部。布朗運動研究的歷史,具有典型性,有點像整個科學研究史的縮影。人對事物的認識總是漸進的,不斷深入的,隨著認識深入會發現各種模型都是理想化的條件。這種認識永遠無法走向事物的絕對認識,因為孤立的事物是不存在的,所有的系統都是宇宙整體的一部分。
⑧ 隨機行走演算法
可以用rand()產生隨機數,然後模,結果為0,1,2,3四種情況,分別代表向前,後,左,右走一步。每次都是隨機的,所以總體也是隨機行走。
代碼如下:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
int x=0,y=0,i;
int step;
cout<<"初始位置為(0,0)"<<endl;
srand(time(NULL));
for(i=1;i<100;i++)
{
step=rand()%4;
if(step==0)
{
x++;
cout<<"第"<<i<<"步向前走"<<endl;
cout<<"當前位置為("<<x<<","<<y<<")"<<endl;
}
else if(step==1)
{
x--;
cout<<"第"<<i<<"步向後走"<<endl;
cout<<"當前位置為("<<x<<","<<y<<")"<<endl;
}
else if(step==2)
{
y--;
cout<<"第"<<i<<"步向左走"<<endl;
cout<<"當前位置為("<<x<<","<<y<<")"<<endl;
}
else if(step==3)
{
y++;
cout<<"第"<<i<<"步向右走"<<endl;
cout<<"當前位置為("<<x<<","<<y<<")"<<endl;
}
}
}
⑨ 簡易電子乒乓球游戲機設計與實現 課設題目,幫幫忙啊~
設計初始發球權隨機確定電路2.設計乒乓球行走路線,分為左中右的組合,例如版從甲方的權左路進攻乙方的右路,進攻路線由鍵盤確定,即雙方各用三個鍵代表左中右,當選按下左鍵盤後,緊接著按下中鍵盤,則代表接對方向本側左方的攻球,打往對方的中路,以此類推,先接對方的球,再進攻對方3球的行走路線由發光二級管逐一顯示,從攻擊方擊球開始到達被攻擊方,多個發光二級管逐一亮滅,全部時間為0.8秒.4當球到達被攻擊方時,且最後一個燈亮結束0,2秒內,被攻擊方接球才有效,並且接球方正確按下相應來球對應側的按鍵,以及反擊對方某路的按鍵後,產生0.2秒的脈沖,當最後一個燈亮結束的0,2秒內的脈沖和反擊脈沖有重合的時候,才為正確擊球,否則失敗。5能夠判斷輸贏並且自動幾分,並按照乒乓球規則交換發球權
謝謝啦~~各位,用MAXplus2
⑩ c++蒙特卡洛方法隨機行走
如下模擬1000次。
#include<iostream>
#include<algorithm>
usingnamespacestd;
doublea[20][20]={0};
intdir[][2]={{-1,0},{1,0},{0,-1},{0,1}};
voidnextxy(int&x,int&y){
inta[4]={0,1,2,3};
random_shuffle(a,a+4);
for(inti=0;i<4;i++){
=x+dir[a[i]][0],
newy=y+dir[a[i]][1];
if(newx>=0&&newx<20&&newy>=0&&newy<20){
x=newx;
y=newy;
return;
}
}
}
intmain(){
intcount=10;
for(intk=0;k<count;k++){
intx=0,y=0;
for(inti=0;i<10000;i++)
nextxy(x,y);
a[x][y]++;
}
for(inti=0;i<20;i++){
for(intj=0;j<20;j++)
cout<<a[i][j]/count<<'';
cout<<endl;
}
}
時間復雜度為o(10000n),n為模擬次數。當n較大時,花費時間較多。