- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
输出重定向
随机漫步计算样例 用RAPTOR进行算法的实现步骤 随机漫步的轨迹描述,可以使用RAPTOR的图形功能 设存在500(length)*500(Width) 的广场,程序开始时醉汉所在的位置在在广场的中央,D1=(length/2,width/2) 假设醉汉每一步的长度为l0,则可以用一随机变量来表示第i步是向东( =l)、南(=2)、西(=3)、或向北(=4 ) 用RAPTOR进行算法的实现步骤 经过N步之后的终点位置为: D2=(x2,y2) 行走的距离为 SQRT((x2-x1)**2+(y2-y1)**2) 设计抽象与子图 main(主要参数的初始化和主控流程); field(广场的描述与醉汉位置初始化); drunk(漫步轨迹描述); location(求下一步的行走坐标) distance(距离计算) 随机漫步算法的子图间调用关系 子图划分的若干原则 功能性:功能独特的子算法可以独立出来,同时功能性对其进行命名; 篇幅限制:建议初学者将每个子算法的篇幅限制在一张A4幅面可以打印的大小,以方便调试和交流 Init子图的设计:由于在RAPTOR子图中共享变量,所以可使用一个子图进行所有变量的初始化和描述 子图划分的若干原则 子图的调用和子图的设计部分(一般在两个不同的子图中),必须分别加以说明,尤其是由于篇幅限制导致的子图划分,会由于功能不够明确,导致仅靠子图名称不能对子图功能有足够的解释 建议将某个样例程序的所有文档(包括设计说明、程序、数据文件、图像等),包含到一个文件夹中,便以取用和存档方便 随机漫步的main子图 main子图的说明 main子图是RAPTOR程序开始执行的地方,一般算法设计中,可以包含: 小型算法的基本数据的初始化; 程序或算法的输入输出; 复杂算法中,最高抽象子算法(包括子图和子程序)的调用序列,或调用的循环结构; 在算法的开始和结束符号中,增加算法的注解和说明 Field子图 Field子图的主要功能 设定场地的大小(图形窗口的像素值); 设定compass[]数组的值,用于改善算法的可读性,注意方向与坐标值增减的关系; 创建图形视窗(使用设定的参数值); 设置图形视窗的标题栏; 取得场地中心的坐标; 绘制醉汉所在的初始位置(场地的中心) Drunk子图 Drunk子图说明 该子图在这个算法中处于核心位置,在算法运行中,不断计算每一步的方向,进行行进位置的变换,并在屏幕上绘制当前漫步的踪迹 Location子图 Location和distance子图说明 distance子图根据光标当前的位置与随机得到的方向,计算下一步漫步者的坐标值 distance子图用于计算漫步结束时,醉汉所处的位置与出发点(广场中心)之间的距离。 在坐标系中,两点间的距离是用勾股定理的方法求得的。设坐标系中的两点A(x0,y0).B(x1,y1),则两点间的距离为:AB= sqrt((x1-x0)^2+(y1-y0)^2)) distance子图 小结与回顾 尽管本章尚未涉及具体的算法,但所有关于算法问题的基本概念和理论都将在后续章节中用到,所以,反复研读这些基本的概念,对于将要到来的算法设计、分析与评价,相信对读者是非常重要的 强调算法设计的可视化、算法运行过程的可视化和计算结果的可视化,不是一个简单的美学应用问题,而是涉及深刻的心理、认知、学习等方面的一个重要理论问题 由于RAPTOR的数值默认精度只有4位小数, 所以,部分随机数结果可能为0.0000, 经过处理得到的整数就是0,值得考虑是否允许? 第2章 算法设计与可视化PART B 《可视化计算》 为算法的设计做准备 常用子程序 随机数的产生和存储(可以用于后续章节将要介绍的排序和查找算法设计) 从文件输入用于算法的基础数据(主要考虑后续算法中要用到图和树等抽象数据类型的描述) 将计算结果输出到文件(用于计算结果的输出与保存,在某个算法需要保存中间结果是可以使用) 图形程序设计 随机数的产生与存储 用数学方法产生的随机数列是根据确定的算法推算出来的,严格说来并不是随机的,因此一般称用数学方法产生的随机数列为伪随机数列 只要用数学公式产生出来的伪随机数列通过统计检验符合一些统计要求,如均匀性、抽样的随机性等,就可以把伪随机数列当作真正的随机数列使用 计算机随机数一般在[0,1)上均匀分布 随机数的主要用途 产生算法(如排序、查找)所必需的数据; 一些随机模拟算法需要的基础数据,例如随机漫步(Random Walk) 减少不必要的人机交互,如要求用户输入10个数据,进行最大、最小值的查找等; 提高算法调试的效率; 提高算法数据工程化的程度。 随机数使用的注意事项 由于随机数只有[0,1)之间的小数,所以需要加工以后,才能获得算法所需要的整数 将r
文档评论(0)