C语言中随机函数的应用

2016-05-11 06:50马红旭
中国新通信 2016年7期
关键词: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.

猜你喜欢
C语言程序
“C语言程序设计”课程混合教学探索
给Windows添加程序快速切换栏
简化化学平衡移动教学程序探索
简化化学平衡移动教学程序探索
基于C语言的计算机软件编程技术探究
中职计算机C语言教学的探讨与研究
中职C语言单片机课堂教学中的趣味性探讨
“程序猿”的生活什么样
计算机原理中C语言的应用价值
英国与欧盟正式启动“离婚”程序程序