【Excel】公式生成不同出現概率的隨機數

工作需要,需要excel生成隨機數,但隨機數需要概率出現,比如:14-16的隨機數,但需要滿足14-14.5,14.5-15.5,15.5-16出現的概率爲10%,80%,10%的要求。

先上結果:

=IF(MATCH(RAND(),{0,0.1,0.9})=2,ROUND(RAND()+14.5,1),IF(RAND()>0.5,ROUND(RAND()*0.5+14,1),ROUND(RAND()*0.5+15.5,1)))

這裏有幾個公式:

 

1、先說最核心的match()

用法:MATCH(lookup_value, lookup_array, [match_type])

說明:在lookup_array 中搜索lookup_value ,並返回對應的位置。但這裏重點在match_type,可以取三個值:-1,0,1。1爲缺省值,MATCH 查找小於或等於 lookup_value 的最大值。

如:=MATCH(0.4,{0,0.1,0.9}),表示在{0,0.1,0.9}中查找小於或等於0.4的最大值,即0.1。0.1在數組中位於第2位,則這個公式的結果爲2。

lookup_value 不同取值,可以列出以下表格:

A B C

搜索

公式

結果 

0 =MATCH(A2,{0,0.1,0.9}) 1
0.1 =MATCH(A3,{0,0.1,0.9}) 2
0.2 =MATCH(A4,{0,0.1,0.9}) 2
0.3 =MATCH(A5,{0,0.1,0.9}) 2
0.4 =MATCH(A6,{0,0.1,0.9}) 2
0.5 =MATCH(A7,{0,0.1,0.9}) 2
0.6 =MATCH(A8,{0,0.1,0.9}) 2
0.7 =MATCH(A9,{0,0.1,0.9}) 2
0.8 =MATCH(A10,{0,0.1,0.9}) 2
0.9 =MATCH(A11,{0,0.1,0.9}) 3

 

通過這個表可以看出,1有10%概率出現,2有80%概率出現,3有10%概率出現。

如果說要滿足20%,60%,15%,5%的概率,那麼可以構造數組爲{0, 0.2, 0.8, 0.95},數組相鄰元素的差值則爲出現的概率

 

2、公式rand()

用法:rand()

說明:RAND 返回了一個大於等於 0 且小於 1 的平均分佈的隨機實數。 每次計算工作表時都會返回一個新的隨機實數。

配合match(),=MATCH(RAND(),{0,0.1,0.9})公式的結果1,2,3出現的概率爲10%,80%,10%。

rand()產生[0,1)的值,如果生成一個範圍值,公式則爲rand()*(max-min)+min,如生成一個14-16範圍的隨機數,公式爲=rand()*2+14

 

3、公式round()

用法:ROUND(number, num_digits)

說明:函數將數字四捨五入到指定的位數。

=round(rand()*2+14,1),則表示對14-16範圍的隨機數保留一位小數。

 

4、公式if()

用法:IF(logical_test, value_if_true, [value_if_false])

說明:如果logical_test   爲真,則返回value_if_true ,否則返回value_if_false 

 

公式講解完畢,那麼現在一步一步寫公式。從裏往外寫:

=RAND(),表示產生[0,1)隨機數。

=MATCH(RAND(),{0,0.1,0.9}),表示產生1,2,3三個數,出現概率爲10%,80%,10%

=IF(MATCH(RAND(),{0,0.1,0.9})=2,"22","11"),表示如果MATCH(RAND(),{0,0.1,0.9})等於2,則結果爲22,否則爲11。這裏是有80%結果爲22,20%爲11。下面來把20%概率平分。

=IF(MATCH(RAND(),{0,0.1,0.9})=2,"22",IF(RAND()>0.5,"11","33")),這樣,11,22,33三種結果的概率爲10%,80%,10%

回到主題,產生14-14.5,14.5-15.5,15.5-16範圍隨機數並保留一位小數的公式分別爲round(rand()*0.5+14,1),round(rand()*1+14.5,1),round(rand()*0.5+15.5,1),將其分別替換"11","22","33",則最終公式爲:

=IF(MATCH(RAND(),{0,0.1,0.9})=2,round(rand()*1+14.5,1),IF(RAND()>0.5,round(rand()*0.5+14,1),round(rand()*0.5+15.5,1)))

--

bin.xu

2020.04.27 錦採

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章