【Excel】公式生成不同出现概率的随机数
工作需要,需要excel生成隨機數(shù),但隨機數(shù)需要概率出現(xiàn),比如:14-16的隨機數(shù),但需要滿足14-14.5,14.5-15.5,15.5-16出現(xiàn)的概率為10%,80%,10%的要求。
先上結(jié)果:
=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在數(shù)組中位于第2位,則這個公式的結(jié)果為2。
對lookup_value?不同取值,可以列出以下表格:
| A | B | C |
| 搜索 | 公式 | 結(jié)果? |
| 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%概率出現(xiàn),2有80%概率出現(xiàn),3有10%概率出現(xiàn)。
如果說要滿足20%,60%,15%,5%的概率,那么可以構(gòu)造數(shù)組為{0, 0.2, 0.8, 0.95},數(shù)組相鄰元素的差值則為出現(xiàn)的概率。
?
2、公式rand()
用法:rand()說明:RAND?返回了一個大于等于 0 且小于 1 的平均分布的隨機實數(shù)。 每次計算工作表時都會返回一個新的隨機實數(shù)。
配合match(),=MATCH(RAND(),{0,0.1,0.9})公式的結(jié)果1,2,3出現(xiàn)的概率為10%,80%,10%。
rand()產(chǎn)生[0,1)的值,如果生成一個范圍值,公式則為rand()*(max-min)+min,如生成一個14-16范圍的隨機數(shù),公式為=rand()*2+14
?
3、公式round()
用法:ROUND(number, num_digits)說明:函數(shù)將數(shù)字四舍五入到指定的位數(shù)。
=round(rand()*2+14,1),則表示對14-16范圍的隨機數(shù)保留一位小數(shù)。
?
4、公式if()
用法:IF(logical_test, value_if_true, [value_if_false])說明:如果logical_test???為真,則返回value_if_true?,否則返回value_if_false?
?
公式講解完畢,那么現(xiàn)在一步一步寫公式。從里往外寫:
=RAND(),表示產(chǎn)生[0,1)隨機數(shù)。
=MATCH(RAND(),{0,0.1,0.9}),表示產(chǎn)生1,2,3三個數(shù),出現(xiàn)概率為10%,80%,10%
=IF(MATCH(RAND(),{0,0.1,0.9})=2,"22","11"),表示如果MATCH(RAND(),{0,0.1,0.9})等于2,則結(jié)果為22,否則為11。這里是有80%結(jié)果為22,20%為11。下面來把20%概率平分。
=IF(MATCH(RAND(),{0,0.1,0.9})=2,"22",IF(RAND()>0.5,"11","33")),這樣,11,22,33三種結(jié)果的概率為10%,80%,10%
回到主題,產(chǎn)生14-14.5,14.5-15.5,15.5-16范圍隨機數(shù)并保留一位小數(shù)的公式分別為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 錦采
總結(jié)
以上是生活随笔為你收集整理的【Excel】公式生成不同出现概率的随机数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 采购管理系统解决方案:助力企业采购平台数
- 下一篇: multiset底层原理,红黑树原理