excle表內的隨機函數應用.docx_第1頁
excle表內的隨機函數應用.docx_第2頁
excle表內的隨機函數應用.docx_第3頁
excle表內的隨機函數應用.docx_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一:生成隨機數字 生成隨機數比較簡單,=rand()即可生成0-1之間(不包含1)的隨機小數; 如果想要得到整數,就用=int(rand()*10,表示0至9的整數,以此類推; 如果要生成a與b之間的隨機實數,就用=rand()*(b-a)+a,如果是要整數就用=int(rand()*(b-a)+a;稍微擴充一下,就能產生固定位數的整數了。 注意:如果要使用函數rand()生成一隨機數,并且使之不隨單元格計算而改變,可以在編輯欄中輸入“=rand()”,保持編輯狀態(tài),然后按F9,將公式永久性地改為隨機數。不過,這樣只能一個一個的永久性更改,如果數字比較多,也可以全部選擇之后,另外選擇一個合適的位置粘貼,粘貼的方法是點擊“右鍵”執(zhí)行“選擇性粘貼”,然后選擇“數值”,即可將之前復制的隨機數公式產生的數值(而不是公式)復制下來! 二:產生隨機字母 隨機小寫字母:=CHAR(INT(RAND()*26)+97) 隨機大寫字母:=CHAR(INT(RAND()*26)+65) 隨機大小寫混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97) 三:產生隨機的六位數的字母和數字混合 =CONCATENATE(IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65),CHAR(INT(RAND()*25+97) 四:隨機不重復數字序列的生成方法 在某些特定的工作需求下,我們需要生成一個不重復的隨機序列。 比如:我們要模擬洗牌,將一副撲克牌去掉大小怪后剩下的52張打亂。 比較笨的方法是在1-52間每生成一個隨機數后,檢查該隨機數是否出現過,如果是第一次出現,就放到序列里,否則重新生成一個隨機數作檢查。在excel worksheet里面用這種辦法,會造成if多層嵌套,不勝其煩,在VBA里面做簡單一些,但是效率太差,越到序列的后端,效率越差。 當然也有比較好的辦法,在VBA里面,將a(1)-a(52)分別賦予1-52,然后做52次循環(huán),例如,第s次生成一個1-52間的隨機數r,將a(s)與a(r)互換,這樣的話,就打亂了原有序列,得到一個不重復的隨機序列。 VBA里這個算法是很容易實現的,但是,處于通用性和安全考慮,有的時候我們并不希望用VBA,我們來看看在worksheet里面如何利用內置函數實現這個功能。 在A1-A52間填入=INT(RAND()*52)+1,產生1-52間的隨機數,注意這里是有重復的 在B1-B52間填入1-52 在C54-BB54填入1-52 在C1填入=IF(ROW()=C$54,INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54),IF(ROW()=INDEX($A$1:$A$52,C$54),INDEX(B$1:B$52,C$54),B1)。 分項解釋: 1:ROW()=C$54,如果當前行等于當前交換所排的序號 2:INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54),返回在B1到B52中選擇A1:A52中的第C54個值 3:IF(ROW()=INDEX($A$1:$A$52,C$54),否則的話,如果當前行等于A1:A52中第C54個值,則: 4:INDEX(B$1:B$52,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論