关于VB的INT函数的小小用法
发布网友
发布时间:2022-04-19 15:35
我来回答
共2个回答
热心网友
时间:2023-07-06 00:02
你好!刚刚看到你的留言。希望没有耽误你。
好吧,我们来看你写出来的函数: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的由来。
希望能够帮到你~~~~来自:求助得到的回答
热心网友
时间:2023-07-06 00:02
Int(9-0+1)*rnd+0本身就是不规范写法,9-0+1应该直接写结果,后面的+0毫无必要,另外括号位置有问题,正确写法是:Int(10*Rnd),这样可以得到0~9之间(包含0和9)的随机数。