一、首先要了解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
如果你在電子表格中使用填充的辦法,可以得出無窮個解。這就是答案,下面,給你貼出幾組解吧。
Num1 Num2 Num3
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.4002065 13.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)