标题 | C语言中随机函数的应用 |
范文 | 马红旭 【摘要】 文章讨论的问题是利用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. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。