“抽獎”是一個讓人聽見就覺得內心沸騰的事情,不管有沒有參與,每次看到大屏幕上滾動的數據總會雙眸發亮,屏住呼吸!那你知道這種撞大運的算法是怎樣操作的嗎?其實在WPS表格中我們也能完成!
先給大家一個動圖體會一下
下面來敲黑板劃重點了!
首先我們需要產生一列隨機數,每個姓名后對應一個隨機數,采用rand()函數,下拉即可達到效果。
接下來,我們在獲獎者這里,使用index函數嵌套rank函數實現。
了解一下這兩個函數:
INDEX函數的作用是返回表或區域中的值或對值的引用,它的函數形式一般為這種INDEX(array,row_num,column_num),第一個參數array為單元格區域或數組常數,后面分別表示行和列,以定位并返回在第一個參數確定的區域里的某行某列的某個值。
rank函數,它是排名函數,最常用的是求某一個數值在某一區域內的排名,它的語法形式是rank(number,ref,[order]),
函數名后面的參數中 number 為需要求排名的那個數值或者單元格名稱(單元格內必須為數字),ref 為排名的參照數值區域,order的為0和1,默認不用輸入,得到的就是從大到小的排名,若是想求倒數第幾,order的值使用1。
現在我們就來看一下我們要用的函數公式,需要返回一個姓名,我們用第一個隨機數在隨機數列里的排名對應在姓名列中找出中獎的人,因為是隨機數,所以這個名額的產生就必定是隨機的~
來看一下我們的函數INDEX($B$2:$B$8,RANK(C2,$C$2:$C$8)),表示引用姓名列這一區域中的某一行,這一行的序數是C2單元格的隨機數在所有隨機數中按照從大到小的排名。
我們隨機截一張圖,當前的獲獎者是王五,因為0.350430205在隨機數里從大到小排名第三,所以index在姓名列里找出第三行,即王五。
理解了原理之后,會不會有人想,那這獲獎的人都確定了還有什么可抽的,當然不是,按住F9隨機數會變化,那么排名也會隨之變化,獲獎者也就在變了!
快去試試吧,感受一下別人的幸運值被自己按在指尖的感覺!