;隨機遊走模擬
;模擬醉漢隨機遊走,醉漢的起點在(25
,25),並且在周圍徘徊
include irvine32.inc
walkmax =
50startx =
25starty =
25;定義結構體
drunkardwalk struct
path coord walkmax dup
(<0,
0>
) pathsused word 0
drunkardwalk ends
displayposition proto currx:word,curry:word
.data
awalk drunkardwalk <
>
.code
main proc
mov esi,offset awalk
call takedrunkenwalk
call waitmsg
exit
main endp;--
----
----
----
----
----
----
----
----
----
----
takedrunkenwalk proc
local currx:word,curry:word ;自定義臨時變數
;向隨機方向行走(東西南北)
;接收:esi為drunkardwalk的結構指標
;返回:結構初始化為隨機數 ;這裡沒有傳引數所以需要儲存暫存器;--
----
----
----
----
----
----
----
----
----
----
pushad
;用offset運算子獲取path--
---coord物件陣列的位址,將其複製到edi
mov edi, esi
add edi, offset drunkardwalk.path
mov ecx, walkmax ;迴圈計數器
mov currx, startx ;當前x的位置
mov curry, starty ;當前y的位置
again:
;把當前位置插入陣列
mov ax, currx
mov (coord ptr [edi]
).x,ax
mov ax, curry
mov (coord ptr [edi]
).y,ax
invoke displayposition,currx,curry
mov eax,
4;選擇乙個方向(0-
3)call randomrange
.if eax==0;北
dec curry
.elseif eax==1;南
inc curry
.elseif eax==2;西
dec currx
.else
inc currx ;東
.endif
add edi,type coord ;指向下乙個coord
loop again
finish:
mov (drunkardwalk ptr [esi]
).pathsused,walkmax
popad
rettakedrunkenwalk endp;--
----
----
----
----
----
----
----
----
----
----
----
displayposition proc currx:word,curry:word
;顯示當前x和y的位置;--
----
----
----
----
----
----
----
----
----
----
----
.data
commastr byte ",",0
.code
pushad
movzx eax ,currx ;當前x的位置
call writedec
mov edx,offset commastr
call writestring
movzx eax ,curry
call writedec
call crlf
popad
retdisplayposition endp
end main
初識隨機遊走
隨機遊走 random walk 又稱隨機游動或隨機漫步。在我們生活中處處都存在著與random walk有關的自然現象,例如氣體分子的運動,滴入水中的墨水,氣味的擴散等 如圖1.4 random walk是擴散過程的基礎,因此它被廣泛地用於對物理和化學等擴散現象的模擬上。此外,random wal...
隨機遊走演算法
隨機遊走 random walk,縮寫為 rw 又稱隨機游動或隨機漫步,是一種數學統計模型,它是一連串的軌跡所組成,其中每一次都是隨機的。它能用來表示不規則的變動形式,如同乙個人酒後亂步,所形成的隨機過程記錄。因此,它是記錄 隨機活動 的基本統計模型。random walk 是隨機過程 stocha...
0018 隨機遊走
題目大意 考慮給定乙個n個節點的數,每個時刻走到相鄰節點是等概率的,m次詢問,求u到v的期望次數 n,m 1e5 題目解法 根據期望的線性性質,u到v的期望結果是該條路徑上每條邊的乙個端點跳到另乙個端點的期望次數。考慮往父親跳的情況。對於乙個點u,令fu為從u到u的父親節點需要的期望次數。同理,對於...