C语言中随机函数的应用

来源 :中国新通信 | 被引量 : 0次 | 上传用户:kylinbin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】 文章讨论的问题是利用c语言中的随机整数,编写几个有用的程序。
  【关键词】 C语言 随机整数 程序
  C语言中随机函数RAND( )的功能是产生0—32767之间的随机整数。根据随机函数取值范围,我们可以变换出几个有用的数学公式,以它们做为数学模型,就能够编写几个有用的程序,本文将研究利用c语言中的随机整数,编写几个有用程序的方法和过程。
  一、验证随机函数取值范围
  有资料显示C语言中随机函数RAND( )的取值范围是-90—32767之间的随机整数,和我们上面提到的0—32767之间的随机整数有一定差距,到底哪个正确,我们不妨亲自编写程序验证。思路是:产生n个随机整数, 每当这个随机整数值小于0时,我们把计算器次数x增加一次,程序最后打印x的值。我们可以根据打印出的x值,做出相应的判断,如果x值大于0次,说明rand( )函数有取[-0,-90]之间负整数的可能。据此我们编写c语言程序,代码如下:
  #include "stdio.h"
  #include "stdlib.h"
  #include "time.h"
  int main()
  { long int n=0,x=0;
  srand( (unsigned)time( NULL ) );
  for(n=1;n<=100000;n++)
  if (rand()<0)x=x+1;
  printf("%d", x ); }
  经多次运行,甚至n最大值取到2G验证,x值始终为零,说明rand()函数不可能取负值,因此验证得到结论:随机函数RAND( )的取值范围是0—32767之间的随机整数。
  二、利用随机函数产生指定位数的随机整数
  利用RAND( )函数产生一位随机整数 (0—9),公式为rand( )%10,产生两位随机整数 (10—99)
  公式为rand( )%90+10,产生三位随机整数 (100—999)公式为rand( )%900+100,以此类推产生n位随機整数公式为 rand()%(int)( pow(10,n)-pow(10,n-1) )+(int)pow(10,n-1) ),据此我们可以编程序实现产生n个n位的随机整数(这里只产生10个数)。代码如下:
  #include "stdio.h"
  #include "stdlib.h"
  #include "math.h"
  #include "time.h"
  int main()
  { long int i,n=0,x=0;
  printf(“请输入产生随机整数的位数”);
  scanf("%d",&n);
  srand( (unsigned)time( NULL ) );
  for(i=1;i<=10;i++)
  if (n==1)printf("%d,",rand()%10);
  else printf("%d,",
  rand()%(int)( pow(10,n)-pow(10,n-1) )
  +(int)pow(10,n-1) ); }
  三、利用随机函数产生指定范围的随机整数
  利用RAND( )函数产生指定[A,B]范围的随机整数,公式为rand( )%(B-A+1)+A。依此公式我们编写了一个程序,功能是:出几道加法题给小学生做,如果学生写对答案,显示‘ok’字样,可以进行下一道题;如果没做对,返回,重做此题。程序代码如下:
  #include “stdio.h”
  #include “stdlib.h”
  #include “math.h”
  #include “time.h”
  int main()
  { int i,n=0;int a,b,c;
  printf(“请问要做几位数加法?”);
  scanf("%d",&n);
  srand( (unsigned)time( NULL ) );
  for(i=1;i<=10;i++)
  {a=rand()%(int)( pow(10,n)-pow(10,n-1) ) +(int)pow(10,n-1) ;
  b=rand()%(int)( pow(10,n)-pow(10,n-1) ) + (int)pow(10,n-1) ;
  a1:printf("%d+%d=?",a,b);
  scanf("%d",&c);
  if (a+b==c)printf("ok\n");
  else goto a1;} }
  当然,程序还可有很多变化,比如学生可以预先选择做几道题,做完每道题退不退出等,此处不赘述。
  四、综述
  利用上述方法,我们研究了C语言随机整数 rand( )几种用法,运算结果正确问题得到解决,该方法省时省力,安全高效,对c语言的应用与推广意义重大。
  参 考 文 献
  [1] 谭浩强等编著 .C程序设计[M]. 北京:清华大学出版社,2005(2007重印)
  [2] 徐金梧等编著. TURBO C使用大全 [M]. 北京:北京科海培训中心,1989.
  [3] Charles Wright等著.邓劲生等译 Visual c++程序员实用大全[M]. 北京:中国水利水电出版社,1989.
其他文献
病历档案记载着每一位患者疾病的发生、发展和医务人员的诊断、治疗全过程.做好病案管理对医疗事故鉴定和提高医务人员技术水平具有重要意义.为加强病案管理,使病案及时回收,
后进生是学校教育不容忽视的群体,后进生的转化是我们教育工作者义不容辞的责任。我们既要搞清楚后进生形成的原因,还要了解后进生的成长经历、生活环境、思想、欢乐、苦恼等。
化学作为一门基础学科,在初中教学课程中既有与其他学科相一致的普遍性,同时也有自身的特点,那就是初中化学以实验为基础,强调与生活生产联系的同时,理论性也较强。这就在一定程度
为提高企业职工食堂食品卫生质量,保障职工的饮食安全、卫生,2002年7~9月对新泰市企业职工食堂进行了卫生状况调查.
【摘 要】 专用数据存储服务器架构可扩展性数据量的迅速增长为企业的发展提出了新的问题和要求。本文简要的介绍了NAS和SAN架构形式、安全性和管理及NAS架构和SAN架构优缺点和互补性进行的论述。  【关键词】 NAS网络存储 SAN网络存储 数据  一、NAS网络存储介绍  NAS 是一种特殊的专用数据存储服务器,它对文件服务器系统进行了优化并加上大容量存储,以文件I/0 方式进行数据传输,是一种
在声乐教育中,学生的歌唱与心理是紧密联系互相作用的整体,歌唱总是在一定心理背景下进行,心理又总是对歌唱者发生着积极或消极的影响。因此,良好的歌唱心理素质是取得歌唱成
摘 要:作为一名初中语文教师不仅仅要传授语文知识,也要在语文课堂上适时适度地对学生进行潜移默化德育教育,但它只能以穿插形式出现并要讲究一些技巧和艺术性。  关键词:语文教学 德育渗透 技巧 艺术性  中图分类号:G420 文献标识码:A 文章编号:1673-9795(2013)08(c)-0165-01  《语文课程标准》中指出:在教学过程中,应使学生受到爱国主义教育、社会主义思想品德的教育和科学
为加强饮食行业的卫生管理,提高餐具消毒质量,2002年对通化市饮食服务单位的餐具进行监测,现将监测结果报道如下.
班主任工作事无巨细,零散琐碎,它需要你拥有足够的耐心和爱心,班主任工作要求你了解学生,只有用心爱自己的学生,你才能体会到工作的快乐;班主任工作的成功与否还在于你是否与
随着教学改革的不断深入,教学过程中对学生能力的培养越来越受到重视,而过去以教师作为教学主体的教学方式,已经无法适应当今社会对人才培养的要求。作为化学教师,要想实现对学生