一、首先要了解RAND函数
因为我们要找出的这几个值,根本就不知道到底是哪几个数,而只知道这几个数加起来等于多少,即只知道和值并不知道这几个数是多少。
因此,必须使用RAND随机数来解决这样的未知问题。
RAND的用法很简单,方法为:=RAND()
其取值范围为:(0,1]
比如:公式=RAND()*10该公式得到的值的范围是 (0,10],即大于0而小于等于10之间的可能的任何一个数。
有了RAND随机数,我们就可以通过给定的总和值,假设是M,推算出第一个数,进而推算出第二个、第三个、第四个……第N个数。
二、通过总和值M推算出几个未知数的理论
假设给定一个和值M,根据该和值,要我们推算出三个数,这三个数加起来刚好等于M。
针对这种条件,我们都明白,这三个数的可能情况,是相当多的,不仅仅是只有一组数字,而是一序列的数据。
第一个数的推算:理论依据是,该数不能大于M
所以我们使用公式Num1=RAND()*M
下面我们来分析第一个数的取值范围,RAND()的取值范围为(0,1],将其再乘以和值M,那么,第一个数的取值范围就为:(0,M]
假如第一个数不为M,那么,第二第三个数一定不为0,否则,第二第三个数一定为0
第二个数的推算:理论依据是,用总和值减去第一个数再除以随机值,
即:Num2==RAND()*(M-Num1)
下面分析第二个数的取值范围,大于0而小于等于(M-Num1)
第三个数的推算:由于是最后一个数了,因此,第三个数Num3=M-Num1-Num2
自然,第三个数的取值范围是大于0小于等于(M-Num1-Num2)。
上述的推理过程中,涉及到的似乎都是未知数,好像没有一个确定的解,但是您别忘了,RAND()和M在具体的应用过程中,完全都是一个具体的数字,因此,所推理出来的第一、第二、第三……第N个数,完全都是一个具体的数字。
下面,我们给出具体的一个例子,好让大家的思路逐清晰起来。
假设给定一个总和值M为80,要求通过Excel给出三个数,这三个数加起来刚好等于80,这三个数如何确定。
这三个数,到底是哪几个,其解有无穷个,也就是说,这三个未知数,有无穷个解,要几个都可以,下面,我们就具体给出公式代码和几组解吧。
第一个数Num1的公式为:=RAND()*80
第二个数Num2的公式为:=RAND()*(80-Num1)
第三个数Num3的公式为:=80-Num1-Num2
如果你在电子表格中使用填充的办法,可以得出无穷个解。这就是答案,下面,给你贴出几组解吧。
Num1Num2Num3
15.79585527 0.557776878 63.64636785
13.65591211 66.0342379 0.309849991
69.89598614 7.781773093 2.322240765
78.74553578 0.209932603 1.044531618
17.43271997 53.86973039 8.697549647
45.66567338 20.400206513.93412011
三、知识扩展
①如何根据总和值得出N个数的公式
知道M,如何确定N个数,让这N个数的和值刚好为M,这N个数的公式如何推算?
第一个数:RAND()*M
第二个数:RAND()*(M-Num1)
第三个数:RAND()*(M-Num1-Num2)
第四个数:RAND()*(M-Num1-Num2-Num3)
……
第N-1个数:RAND()*(M-Num1-Num2-Num3-……-Num(n-2))
第N个数:M-M-Num1-Num2-Num3-……-Num(n-2)-Num(n-1)
这就是通用的公式。是根据上面的理论与实践推论得出的,经过验证,没有发现错误。
②根据M得出几个整数而不是实数
如果知道M总和值,如何得出几个数,并且,这几个数必须为整数而不是带有小数点的实数?
借助int()函数可解决此类问题。通用公式如下:
第一个数:int(RAND()*M)
第二个数:int(RAND()*(M-Num1))
第三个数:int(RAND()*(M-Num1-Num2))
第四个数:int(RAND()*(M-Num1-Num2-Num3))
……
第N-1个数:int(RAND()*(M-Num1-Num2-Num3-……-Num(n-2)))
第N个数:M-M-Num1-Num2-Num3-……-Num(n-2)-Num(n-1)