关于VB的INT函数的小小用法

我在做数组实验的时候,随机输出的20个数,5个一行,函数是这样的Int(9-0+1)*rnd+0请问后面这个加0是什么意思?前面为什么是9-0+1,不能是8-0+2,什么... 我在做数组实验的时候,随机输出的20个数,5个一行,函数是这样的 Int(9-0+1)*rnd+0 请问后面这个加0是什么意思?前面为什么是9-0+1,不能是8-0+2,什么的,我真的是小白…… 展开
 我来答
Yuqi_Tan

推荐于2016-03-30 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3439万
展开全部
你好!刚刚看到你的留言。希望没有耽误你。

好吧,我们来看你写出来的函数:Int(9-0+1)*rnd+0 它的作用是一个产生随机数。

一、我们分析一下它的结构和它的最终作用:

它一共由三部分组成:
Int(9-0+1)——它是一个取整函数int(x),即求不大于x的最大整数。在本例中,自变量x被一个计算式取代:9-0+1,它是一个恒定值10。所以这一部分相当于int(10)=10,是一个恒定不变的量。
rnd——是产生随机数的函数rnd(x)的简写形式。它产生一个介于[0,1)之间的小数。
+0 ——毫无疑问,这一步对于程序运行毫无意义,但是既然编写程序的人员写上,则有它的原因,留在下面分析。在分析程序运行时,当成没有这一项就可以了。

现在综合来看它的作用:Int(9-0+1)*rnd+0相当于:10*rnd=10*[0,1)=[0,10),它的最终目的是产生一个介于0到9.9999999之间(包括两头)的小数。

二、再看看这一句里边冗余内容及分析:
刚才说的+0,以及9-0+1这两个问题不算是无意义内容,等后面仔细分析。真正无意义的是int()函数的使用,这个地方,int(9-0+1)=(9-0+1),两者完全相等,所以说int是冗余的。
int()函数是个取整函数,如果要产生小数是不需要int()的(这句话仅限于此处使用),我的分析应该是作者想产生0到9的整数,而不是像第一步分析的那样产生小数。这样的话,int()是用错了地方。

三、产生0-9整数随机数的正确语句:
完整的语句应该是int(rnd*(9-0+1)+0),你会说这一句跟int(rnd*10)相当,是的。原因下面分析。

四、为什么要写+0:
一般地,在vb中,要产生M-N之间的随机整数(包括M和N且<N),是这样写的:
int(rnd*(N-M+1)+M)
当你把M=0,N=9代入后,就得到了int(rnd*(9-0+1)+0)这个一般式子。
如:你如果要产生[78,215]之间的随机整数,就可以写成:int(rnd*(215-78+1)+78)就可以了,当然你还可以作出计算并简写成:int(rnd*138+78),这产生一个问题,你从这一句中很难看得出产生随机数的范围了!!(且不说容易产生计算错误呢)不如写成int(rnd*(215-78+1)+78),这样一眼就可以看出产生的范围是[78,215]。
这就是那个+0的由来。

希望能够帮到你~~~~
来自:求助得到的回答
百度网友bdb9803
2015-04-20 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
Int(9-0+1)*rnd+0本身就是不规范写法,9-0+1应该直接写结果,后面的+0毫无必要,另外括号位置有问题,正确写法是:Int(10*Rnd),这样可以得到0~9之间(包含0和9)的随机数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式