请教一个excel函数公式

来源:百度知道 编辑:UC知道 时间:2024/06/15 00:48:11
在网上看到这样一句:要产生一个N到M之间的随机数,可以使用公式“Int(Rand()*(M-N+1))+N”,我试下很好用。但不知道公式表示的意思,请高手给解释一下此公式每一步都表示什么。我已经知道,int表示取整数,rand()表示0-1之间的随机数。“*(M-N+1))+N”就不知道是什么意思了。“1”后面的两个括号都与谁发生联系?希望能给一个详细点的解释。

N到M之间,所以肯定是大于N的数吧。所以就是N加上前面的那串表达式。
前面的表达式分解:因rand()函数返回大于等于0且小于1的数{所以Rand()*(M-N+1)是一个大于等于0,且小于M-N+1的数值},前面在加上int()进行取整数,所以“+N”前面的这串表达式的值介于0和M-N之间。
当等于0的时候,N+0就是N;当等于M-N的时候,N+m-n,就等于M。所以整个表达式的值是N到M之间的随机数。
紧挨着1的括号是(M-N+1)的。在后面那个括号是int的。
如果看懂了,希望给我加点分哈!

我是这样理解的:
首先,任意A(A不等于0)乘以一个0—1之间的数得到的结果是只可能位于零和这个数之间,比如:5乘以0-1之间的数必须大于0而小5.
其次,再将A*RAND()得到的结果取整得到就是大于等于0而小于等于A-1,因为结果包含0,所以这里的A可以等于任何数了。
那么,M-N实际是最大值与最小值的相差数,用这个数乘以RAND()取整得到的值也就大于等于0小于相差数-1,这样再加上N,可以是N到M-1的任何数,不能包含M.
所以,只有M-N+1计算出来的数乘以RAND(),结果取整再加上N才得到N到M的随机数,而且是包含M,N本身的。
举例说明更明白:
M=5 N=2RAND()=A
INT(A*M)+2 A如果取0.8,值就得6,所以必须用M-N来替代M;
INT(A*(M-N))+2 只能得到2,3,4,因为(M-N)*A取大只能取到2多,小于3,而加上2的值只能小于等于4,无法等于5
所以。。。。