多目标随机行走说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机行走也叫无规则行走,是物理上的布朗运动。该软件通过使用Win32的窗口程序模式,实现随机行走路径图形生成程序的设计与开发;给出了随机数发生器的参数控制接口,允许用户在控制范围内自由选择参数;支持四方向和八方向的绝对方向模式和相对方向模式;提供无轨迹模式,拖尾型轨迹模式,单点轨迹模式生成模式。该软件设计通过使用MASMPlusWin32的窗口程序模式来实现。
关键词:随机数发生器 ; 二维随机行走;越界检查
摘要 (1)
1.问题描述 (2)
2.系统设计 (3)
2.1.功能模块 (3)
2.2工作流程图 (4)
3.系统实现 (5)
4.系统测试 (8)
4.1测试的目的 (8)
4.2 测试方案 (8)
4.3测试结果 (8)
4.3.1.拖尾型轨迹四方向绝对测试: (8)
4.3.2.拖尾型轨迹四方向相对测试: (9)
4.3.3.拖尾型轨迹八方向绝对测试: (9)
4.3.4.拖尾型轨迹八方向向对测试: (10)
4.3.5.无轨迹绝对四方向测试: (10)
4.3.6.单点轨迹绝对四方向测试: (11)
4.4 可行性分析 (11)
总结 (12)
参考文献 (13)
源代码 (14)
1.问题描述
随机行走也叫无规则行走,是物理上的布朗运动。从最初的无规则分子热运动、微观粒子的运动形成模型的研究,已广泛应用到了物理学、化学、结晶学、天文学、生物学、气象学、流体力学、经济学、交通等许多领域,并且发挥着重要作用。目前已有许多随机行走模型,如简单随机行走、对称随机行走、带有吸收壁的随机行走、格点上的随机行走等等。
无规则行走在任意尺度上都具有相似结构。而扩散以一个初始分布释放大量的无规则行走,观察他们的密度就会得到分布函数,这就是多目标随机行走问题研究的重点。
本设计开发一个基于多目标的二维随机行走计算机模拟系统,可以实现对随机模式与目标模式的控制,以便直观的查看多目标随机行走的分布规律及行为模式。并从数学的角度做适当的探讨及给出相应的算法。
2.系统设计
2.1.功能模块
该程序主要是通过对随机行走的各种可能性进行探讨,确定了随机行走的随机数控制、随机方向控制和生成过程的随机行走模式组合。支持四方向和八方向的绝对方向模式和相对方向模式;提供无轨迹模式,拖尾型轨迹模式,单点轨迹模式的生成模式,且种子生成方式分为集中和分散两种。
图2.1 功能图
可以通过运用重要指令对随机行走的随机数的设置,来选择相应的随机行走的方向和随机行走的模式及种子模式。其中随机行走的方向有四方向和八方向;随机行走的模式有绝对模式和相对模式,种子模式有分散模式和集中模式。
2.2工作流程图
图2.2 工作流程图
图2.2为随机行走程序的工作流程图,该程序通过使用Win 32窗口程序模式,给出随机数发生器的参数控制接口。通过对随机行走程序的随机参数的设置,选择相应的随机行走方向(如:四方形方向,八方形方向)和相应的随机行走模式(如:绝对模式和相对模式);之后形成随机行走的模式组合:四方形的绝对模式、八方形的绝对模式、四方形的相对模式、八方形的相对模式。
3.系统实现
;随机数发生器(产生0-3或0-7的随机数)
md proc
mov eax, ra
mov edx, tn
imul eax, edx ; eax = a*r
add eax, rb ; eax = a*r+b
mov ecx, rs
mov tn, eax ; rn = a*r+b
shr eax, cl ; eax = (a*r+b)/(2^s)
.if mf&2; 相对方向模式,从当前方向算起
add eax, edx
.endif
and eax, ma ; eax = ((a*r+b)/(2^s))%m为返回值
ret
rnd endp
; 绘制直线
drawLine proc uses ebx esi edi, _x:SWORD, _y:SWORD, _xx:SWORD, _yy:SWORD, _color:DWORD
LOCAL incx:SDWORD, incy:SDWORD
mov eax, bitmapTemp.bmHeight
movzx ecx, _y
sub eax, ecx
dec eax
imul eax, bitmapTemp.bmWidthBytes
movzx edx, _x
shl edx, 2
add eax, edx
mov edi, mTemp
add edi, eax
; 计算两个方向的画线距离
movzx eax, _xx
movzx edx, _x
sub eax, edx ; dx = xx - x
movzx edx, _y
movzx ecx, _yy
sub edx, ecx ; dy = yy - y
; 单步(n个像素距离内的)随机行走
Step proc uses ebx, hdcT:HDC, _n:DWORD LOCAL _k:DWORD
.if view == 3
mov ebx, offset ats
mov edx, offset att
mov ecx, seed
.while ecx
mov eax, [ebx]
mov [edx], eax
add ebx, 8
add edx, 4
dec ecx
.endw
.endif mov ecx, 0
.while ecx < _n
push ecx
mov ebx, offset ats
mov eax, seed
mov _k, eax
.while _k