5 计算机模拟.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5 计算机模拟

Page ? * 说明 (1)操作符+=和-=,是两种复合赋值操作符,分别是加与赋值、减与赋值复合操作的简洁表示形式。例如,a += b,相当于a = a + b,a -= b,相当于a = a – b。类似的操作符还有*=、/=、%=等。一定要注意,这些操作符和++、--都具有赋值功能。例如,下面的3条语句 int a = 3, b = 3; a += a -= a * a; b += b -= b *= b; (2)在这个程序中,采用宏定义的方式定义原始数据。这种方法的好处是修改便利,如要使用不同的原始数据进行程序测试时,只需在预处理命令处集中修改即可,不需要在程序代码中进行分散修改,从而减少了出错的几率。 a的值为-12 b的值为0 5. 程序测试 本例采用重复结构,可以采用边值分析方法在循环的边界上进行测试。同时,本例采用了步长法进行迭代,因此还须对步长进行数据分析法测试。 Page ? * (1)对时间段进行边值分析。 · 时间段为0min,步长为1s: · 时间段为1min,步长为1s: · 时间段为30min,步长为1s: 显然,时间段越长,水池中的含盐量越多,这符合题意. (2)对于步长的变化进行数据分析测试 Page ? * · 时间段为30min,步长为10s: · 时间段为30min,步长为100s: · 时间段为30min,步长为1800s: 从数据的变化规律可以看出,越接近本题开始时的分析结论——步长越长,误差越大。 补充习题 (1)一个人用定滑轮拖湖面上的一艘小船。如图所示,假定地面比湖面高出hm,小船距岸边dm,人在岸上以速度vm/s收绳,计算把小船拖到岸边要多长时间。 Page ? * h d The end Thank you! wenmingyao2008@ 第5单元 计算机模拟 Page ? * Page ? * 5.1 随机问题模拟 Page ? * 模拟(simulation)又称仿真,就是利用模型在实验环境下对真实系统进行研究。当研究环境是计算机环境时,就是计算机模拟。从模拟问题的性质来看,又可以分为确定型模拟和随机模拟。 这里介绍随机模拟问题,就是用计算机产生的随机数模拟现实世界中的一些随机现象。在C语言中,随机数用库函数rand()产生。 Page ? * 5.1.1 产品随机抽样 1. 问题描述和算法分析 产品的质量检验,除了必要的项目外,多数项目采用抽样检验方式。本例要求设计一个抽样程序,假设有m个产品,分别用正整数1~m编号,从中随机抽取n个编号。 用人工方法是在编有m个号的纸片中,按照每次随机抽取一张的方式,共抽取n次。用计算机进行模拟,可以每次随机地在整数1 ~ m之中产生一个数,共产生n次,即采用算法 for( i = 1; i = n; i ++){ 产生一个1 ~ m之间的随机数 } Page ? * 在C语言中,可以使用随机数函数rand()产生随机数。这是系统的函数库中定义的一个函数。 (1)库函数rand()的应用 一 该函数的原型(提供了该函数的用法):int rand()。 二 该函数没有参数,只能产生[0,RAND_MAX-1]中的一个随机整数。 三 RAND_MAX定义和rand()说明在头文件stdlib.h中。 Page ? * A 7 0 (2)如何用rand()产生1~m之间的随机数。 如何产生0~11之间的随机数? Page ? * 在一般情况下,可以使用如下截短移位变换: · rand() % m:产生0 ~ m之间(不包括m)的随机数; · rand() % m + 1:产生1 ~ m + 1之间(包括m)的随机数; · rand() % m + n:产生n ~ m + n之间(不包括m + n)的随机数。 · rand() % m + n + 1:产生n ~ m + n之间(包括m + n)的随机数。 注意:当要求的随机数区间很小时,所产生的随机数列的分布会很不均匀。 Page ? * #include stdio.h #include stdlib.h /* 函数rand()要求的头文件 */ int main (void){ int m,n,i,r; printf(请输入产品数量和抽样台数:); scanf(%d,%d,m,n); for(i = 1;i = n;i ++){ r = rand() % m+1; /* 产生一个随机数 */ printf(%d;,r); } printf(\n); return 0; } Page ? * 请输入产品数量和抽样台数:100,5? 47;31;83;91;57; 请输入产品数量和抽样台数:100,

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档