棒球棒什么牌子好 棒球大联盟寿也结婚 棒球运动员英文单词 球探棒球比分 棒球棍加工图纸 棒球帽品牌小鸟队 棒球帽搭配发型 棒球大联盟第五季 时尚棒球服 棒球棒算管制器具吗 棒球大联盟图片 棒球有几种球 9局职业棒球2013 棒球规则图解漫画 棒球比赛2011
 
 
當前位置:首頁 > 養豬技術 > 綜合養豬 > 正文

解讀Excel中的RAND函數和RANDBETWEEN函數用法和差異

   轉載 發布時間:2019-07-10 10:14:56   來源:我愛極客   舉報
【導讀】在我們日常工作我們都希望所有的事情都按我們的意愿有序執行,不過有時也需要事情按照無序,沒有規律的生成數據,比如我們在計算機上考試時隨機生成的試卷,網上商城抽獎活動,中獎的序列號碼這些內里無一沒有隨機函數的身影,那么問題...

在我們日常工作我們都希望所有的事情都按我們的意愿有序執行,不過有時也需要事情按照無序,沒有規律的生成數據,比如我們在計算機上考試時隨機生成的試卷,網上商城抽獎活動,中獎的序列號碼這些內里無一沒有隨機函數的身影,那么問題來了,Excel可以做抽獎程序嗎?可以做隨機點名器嗎?答案是肯定的,Excel也有隨機函數,好了準備小馬扎,調整好小桌板,我們一起了解隨機函數那點事吧!

RAND函數

說起RAND函數它在Excel中也是特別的存在,它是函數中為數不多的沒有參數的函數之一,功能也比較簡單,隨機生成>=0且<1的數字,這里需要注意的是并不包括1,我們在使用它的時候需多加注意,雖然它的語法結構及其簡單,不過我們還是準備了它的結構圖,如下:

RAND函數的語法結構圖

?用途:其實隨機函數用途還算廣泛,它在解決一系列從有序變無序的問題上有獨特的優勢,不過在應用的過程,更多的是用RAND函數生成隨機的固定范圍的整數,我們就從最簡答的開始,看看如何生成>=1且<=10的整數?

思路:單獨使用RAND函數實現是不太可能的,需要借助之前文章哼哈二將中的函數,兩個函數兩個思路,我們先用ROUNDDOWN函數吧!我們了解RAND函數生成>=0且小于1的數,如果我們直接乘以10就會得到>=0且<10,接著向下取整(ROUNDDOWN)得到范圍>=0且<=9,然后整體加1,正好是>=1且<=10;

公式:=ROUNDDOWN(RAND()*10,0)+1

公式做出來的,不過乘數10是怎么來的,有沒有統一的公式可以套用的啊?帶著這些問題繼續看下面的例子:如何生成>=80且<=100的整數?

思路:有了上面的經驗,我們就需要先生成1-20包括20的整數,如果直接rand()&*20,在加上ROUNDDOWN函數的謹慎性格,最多也就生成>=0且<=19的數字,再80,只能生成>=80且<=99數字;索性我們就×(20+1),這樣就完美達到我們的需求了。

公式:=ROUNDDOWN(RAND()*21,0)+80

總結:回過頭我們再看這兩個例子,第1個生成的區間1到10而非0-10,若生成0-10則是11個數,她的公式應該是=ROUNDDOWN(RAND()*11,0),第2個例子中的生成80-100的數字,一共多少個數字呢?沒錯21個,然后再加上開始值就是我們剛才編寫的公式啦!到這我們是不是就能總結出通用的公式了=rounddown(rand()*(生成數字個數=大數-小數+1),0)+小數,我整理一下完整公式如下:

生成>=N且<=M的隨機整數的通用公式

如果以后遇到這種問題只需將M和N帶入公式就可以了,說完rounddown的實現方法,我們一起再看roundup函數是如何實現的?

說到roundup函數的功能向上取整,公式=roundup(rand(),num)則理論上生成范圍是>=0且<=1,而事實卻是當公式=roundup(rand(),0)它的結果會一直是1,哪如何解決這個問題呢?哪我們根據上面的經驗,公式變為=roundup(rand()*2,0),它的范圍變為1或2,原來差1,只需在最后結果-1就行了。那么其他的是不是也符合這個規律,我們測試了幾組數據,效果如下:

測試roundup函數生成區間數字的數據

經過驗證,我們也總結出通用公式如下圖:

ROUNDUP函數實現生成要求范圍的整數的通用公式

?在說后面的知識點之前,先說一下為什么roundup(rand(),0)的結果一直會是1,其實這樣的問題弱類型處理程序中的通病,在它們的世界里,就沒有整數的概念,都是帶有小數的部分,不過附加的數字特別特別小而已,當遇到roundup函數特性,不論附加多少小,在它眼里都是進位數,而上面的公式進位數是1,所以所有的結果都是1啦。哪還有沒有容易的方法生成整數隨機數呢?當然有了,就是下面需要說的函數啦!

RANDBETWEEN函數

它相對RAND函數的語法結構就復雜多了,它有兩個必填參數,且第2個參數必須>=第1個參數,否則返回#NUM!的結果,一起看一下它的語法結構圖如下:

RANDBETWEEN函數的語法結構圖

?函數生成的整數的數字區間為>=小數字且<=大數字,如果你想生成0-10的隨機數字直接輸入公式=randbetween(0,10)就可以可以啦,是不是很方便啊!如果遇到大小數字帶有小數部分,它遵循的規則為,整數部分相同,則取離它最近的最小整數,即randbetween(0.2,0.59)=randbetween(1,1)=1;如果整數部分不想相等,則大數字往小的取值,小數字往大的取值即randbetween(1.23,2.999)=randbetween(2,2)=2;我們也會遇到兩個參數為負數的情況同理:比如randbetween(-0.8.-0.1)=randbetween(0,0)=0,整數部分不同的情況為=randbetween(-6.3,-1.2)=randbetween(-6,-2),至于驗證的部分就留給你做練習吧!

應避免的誤區

函數的部分說完了,最后我把我再工作中遇到問題或錯誤總結了一下,這里分享給屏幕前的你:

1.當我們使用rand()函數獲取隨機整數的時候,不管用的是我提到的函數還是用INT或TRUNC函數來取整操作,一定注意生成的范圍邊界問題,比如要生成20到50的隨機整數,公式=int(rand()*30)+20,表面沒有問題,其實這個公式永遠都無法生成50這個隨機數,如果你把這個隨機的范圍應用提取某個范圍單元格的值的話,始終會有一部分的單元格的值是不會被讀取到的。

2.就是負數的問題,我們在做取整的操作的時候,使用的函數不同,需要注意他們之間的細微差別,比如INT(-5.67)返回的結果為-6,而rounddown(-5.67,0)和TRUNC(-5.67,0)返回結果都為-5,如果想規避這些不同函數的正負差異,我們可以生成正整數隨機數,再取反或乘-1就能一定程度避免這些沒有必要的麻煩。

3.不要以為有randbetween函數,rand函數就沒有什么用了,rand函數處理起來數據更加的靈活,在生成小數隨機數上它有特有的優勢,具體還是要看你的使用場景了,舉一個VBA上可以用的場景,比如讓我們快速打亂一個名單該如何操作呢,我的思路是用rand函數生成隨機數,比0.5大的,就交換相鄰的人名位置,比0.5小就不交換位置,這樣是不是比生成一個不重復的序列要簡單多了。

文章的最后我想說的就是,隨機函數的用途確實有很多,單唯獨沒有在軟件序列號的中使用,因為軟件序列號是通過嚴格的數學公式計算出來的字母字符序列,而生成序列號并不允許隨機的,驗證序列號需要將序列號代入固定的算法中得出固定的值才可以的,這也是為什么我們可以使用序列號生成器來生成序列號,這里的關鍵需要破擊序列號的驗證算法,至于怎么破解就不在文章的范圍之內了。

你學會了Excel的隨機函數,有一個好處,就是不用發愁給小孩出小學算術題了,只要編寫相應的規則,只要拖拽鼠標就能完成了,好了今天的文章就到這,希望你能通過閱讀有所收獲,如果你在工作中遇到關于Excel什么問題,歡迎留言告訴我,我會第一時間盡我最大的努力幫助你,又說那話啦:你工作學習的路上并不孤單,我們一起結伴而行!

免責申明:本欄目所發資料信息部分來自網絡,僅供大家學習、交流。我們尊重原創作者和單位,支持正版。若本文侵犯了您的權益,請直接點擊提交聯系我們,立刻刪除!
 
相關推薦
 
圖文熱點
 

 

欄目推薦

說給雙創教育者:要么自己去創業要么幫學生創業,但別和學生爭利

這個Excel函數你都不會用,怪不得你寫那么長的公式領導很嫌棄

解讀Excel中的RAND函數和RANDBETWEEN函數用法和差異

保定市淶水縣山南村依托紅色旅游帶動百姓致富

大棚葡萄成為致富“金疙瘩”

為什么淘寶只賣幾塊錢的物品還包郵?商家到底能賺錢嗎?真相現實

 
穿越棒球大联盟之吾郎
棒球棒什么牌子好 棒球大联盟寿也结婚 棒球运动员英文单词 球探棒球比分 棒球棍加工图纸 棒球帽品牌小鸟队 棒球帽搭配发型 棒球大联盟第五季 时尚棒球服 棒球棒算管制器具吗 棒球大联盟图片 棒球有几种球 9局职业棒球2013 棒球规则图解漫画 棒球比赛2011
正规棋牌下载送10现金 腾讯棋牌都有哪些 时时彩四星万能大底 更恐怖嘉年华 足球比分007 贵州11选五复式投注表 股票涨跌最大的 时时彩稳赚大全 49选7开奖走势图