Excel生成隨機數的技巧,隨機數發生器,你用過嗎

2021-01-08 數據分析與可視化

商業分析中的很多應用要求從特定的概率分布中隨機抽樣。例如,在財務模型中,當銷售額、銷量增長幅度、運營支出和通貨膨脹因子等全都不確定時,我們可能對累積的貼現現金流的分布感興趣,而這一分布可以用概率分布來描述。那些決策模型的結果變量,是隨機輸入變量的複雜函數。要理解這些變量的概率分布,只有藉助所謂蒙特-卡羅方法的抽樣流程才能實現這一抽樣流程。

Excel獲取隨機數

從概率分布中產生隨機樣本,其基本原理是隨機數的概念。隨機數是均勻分布在0和1之間的數。從技術上講,電腦不能產生真正的隨機數,因為它們必須使用一個可預測的算法。但是,設計用於產生一個數列的算法,似乎是隨機的。在 Excel中,我們可以使用函數RAND()在任何一個單元格之中產生隨機數。這個函數沒有參數,因此,括號之中應當保持空格(但括號是必需的)。下圖是顯示在 Excel I中產生的10個隨機數。你應當知道的是,除非阻止了自動的重新計算功能,否則,不論什麼時候修改任何單元格中的值,包含有RAND()的單元格中的值都會改變。

在 Excel的「公式」選項卡的「計算」組中的「計算選項」,可以手動地更改「自動計算」的選項。

在手動重新計算模式下,只有在按下了F9按鈕時,工作表才會重新計算。

從離散概率分布中抽樣

使用隨機數從離散概率分布中抽樣,很容易做到。接下來將使用擲兩個骰子的概率分布來解釋這一過程。

從擲兩個骰子的結果的概率分布中抽樣,用小數來表示的概率質量函數和累積分布函數如下所示。

注意,F(x)值將從0到1之間的區間分成更小的區間,這些更小的區間與結果的概率相對應。例如,從0(但不包括)至0.028(包括)的區間中,其概率為0.028,與結果x=2相對應;從0.028(但不包括)至0.083(包括)的區間,其概率為0.056,與結果x=3相對應;依此類推。概括如下:

這樣,任何隨機數都必須處在這些區間的某一個之中。所以,為了從這個分布中產生個結果,我們只需要選擇一個隨機數,並確定它處在哪個區間之中。假設我們使用圖中的數據。第一個隨機數是0.902656.它處在與樣本結果10相對應的區間之中。第二個隨機數是0.396774.它處在與結果6相對應的區間之中。基本上,這相當於我們在電腦上發明了擲骰子的方法。如果反覆做下去,那麼,每個結果發生的頻率,應當與隨機數的區間的大小成比例(也就是說,概率與結果相關聯),因為隨機數是均勻分布的。

從常見的概率分布中抽樣

產生隨機數並將它們轉換成從概率分布中獲取的結果的方法,可以用於從幾乎任何分布中抽取的樣本。從某個規定的概率分布中產生的隨機的值,稱為隨機變數。例如,將隨機數轉換成一個來自a和b之間的均勻分布的隨機變數,是件很容易的事。考慮下面這個公式:

U=a+(b-a)*RAND()

注意當RAND()=0、U=a時的情形以及當RAND()接近1、U接近b時的情形。對於RAND()介於0和1之間的其他任何值,(b-a) * RAND()代表著區間(a,b)的比例,與 RAND()對區間(0,1)時的比例相同。因此,所有介於a與b之間的實數,都可能發生。由於RAND()是均勻分布的,因此,它也是U。

雖然這十分容易,但確實難以看出是怎樣從其他分布中產生隨機變數的,比如正態分布或指數分布。這裡不描述如何做這些事情的技術細節,而是描述一下 Excel中做這些事情的能力。

使用Excel隨機數發生器

Excel讓你可以從離散分布和其他一些分布中產生隨機變數,方法是運用「分析」工具欄中的「隨機數發生器」選項。對於功能區的中「數據」選項卡,選擇「分析」組的「數據分析」選項,然後選擇「隨機數發生器」選項。接下來,就會出現如下圖所示的隨機數發生器的對話框。

從這個對話框中可以選擇七種分布:均勻、正態、伯努利、二項式、泊松、模式以及離散(點擊「模式」後,出現了下限和上限的限制、間隔、重複每一數字以及重複數列等選項)。如果你選擇「輸出區域」選項,那麼,你需要規定用來保存結果的輸出表格的左上角單元格引用、變量的個數(你想要發生的值的列數)、隨機數個數(你想要為每個變量發生的數據點的個數)以及分布類型。默認的分布是離散分布。

接下來將從平均值為12的泊松分布中產生100個結果。在「隨機數發生器」對話框中,把變量個數」設定為1,把「隨機數個數」設定為100,並且從「分布」的下拉框中選擇「泊松」。對話框將會產生變化,要求你輸入λ的值,也就是泊松分布的平均值。在該方框中輸入12,點擊「確定」按鈕。該工具將會在一列之中顯示隨機數。

下圖將演示整個操作過程並將結果生成直方圖。

隨機數發生器工具還讓你能夠規定隨機數種子的選項。隨機數種子是從已經發生的一連串隨機數中取的一個值。通過規定同一個種子,你可以再晚些時候再發生同一些隨機數。

當我們在模擬過程中想要再產生一個完全相同的「隨機」事件系列,以便測試同種情況下不同的策略或決策變量的效果時,確定隨機數種子是非常理想的做法。不過,使用「隨機數發生器」工具的一個劣勢是:要產生一組新的樣本值,你必須重複發生隨機數的過程。按下「重新計算」按鈕(F9)將不能改變這些值。這可能使人們難以用這一工具來分析決策模型。

Excel還提供了幾個可以用來產生隨機變數的函數。對於正態分布,可以使用:

NORM.INV(probability,mean, standard deviation)——帶有規定的平均值和標準差的正態分布。NORM.S.INV(probability)——標準正態分布。對於某些高級分布,可以使用:

LOGNORM.INV(probability,mean, standard_deviation)——參數分布,其中Ln(X)已經規定了平均值和標準差。BETA.INV(probability,alpha,beta,A,B)——貝塔分布。使用這些函數,只要在函數中概率的位置輸入RAND()就可以了。比如,NORM. INV(RAND(),5,2)將從一個平均值為5、標準差為2的正態分布中發生隨機變數。每次工作表被重新計算,就發生新的隨機數,因此也產生新的隨機變數。

這些函數可以嵌入到單元格公式中,而且不論什麼時候工作表被重新計算,都將產生新的值。

相關焦點

  • 真隨機數發生器在信息安全系統中的應用
    整個系統的安全性完全依賴於隨機數序列的生成效率和質量。  圖1示例是一個隨機數發生器在安全控制器內部的典型應用,隨機數被用來產生動態密鑰對數據總線和外設寄存器進行動態加密,使得在CPU和外設間實現數據加密傳輸,整個過程沒有明文存在。
  • 偽隨機數發生器:你不知道,其實計算機並不能產生隨機數
    在生活中,我們需要用到隨機數的地方很多,例子也很好舉,比如我們買彩票的號碼就是一個隨機數。但是當計算機中需要產生隨機數的時候,絕大多數情況下並不是真的隨機數,我們把它稱為偽隨機數。雖然我們已經努力儘量讓產生的偽隨機數接近真實隨機數的概率,但是二者還是有本質區別的,最重要的一點區別是真實隨機數不能預測也沒有規律,而偽隨機數一定有規律(只是低級的規律好找,高級的規律不好找)而且可以被預測出來。
  • 隨機和偽隨機 電腦隨機數是如何生成的?
    隨機和偽隨機 電腦隨機數是如何生成的?要理解為什麼這種隨機數不太可靠,你必須理解隨機數的生成原理。  隨機數的作用  隨機數的使用歷史已經有數千年。無論是拋硬幣還是搖色子,目的是讓隨機概率決定結果。電腦中的隨機數生成器的目的也是如此——生成隨機不可預測的結果。  加密法要求數字不能被攻擊者猜到,不能多次使用同樣的數字。
  • 使用 Java Faker 生成隨機數
    如果沒有實際數據,怎樣為 Java 程序生成一些有意義的隨機數據?我用過 UUID 和 ThreadLocalRandom 來生成隨機數,但是能力有限,無法提供特定領域的隨機數據。於是,我開始尋找更好的解決方案。最後找到了 Faker 這個好東西,幸運的是有 Java 版本:Java Faker。不僅使用方便,而且可以設置多個領域,幾秒鐘內生成需要的隨機數。
  • 量子真隨機數發生器研究取得進展
    超高速真隨機數發生器簡化設計方案(上)與後處理方法(下)信息科學技術學院郭弘教授課題組與物理學院張建瑋副教授課題組開展合作,在用光學隨機源設計研製量子真隨機數發生器的研究中取得重要進展 近期,郭弘課題組已在真隨機數發生器研究領取得了一系列研究成果。例如,通過對離散型和連續型量子隨機源的持續研究,在隨機源的建模分析、信號採集手段、數據後處理方法和隨機性統計檢測等方面均形成理論和技術的積累。
  • 利用FPGA的自身特性實現隨機數發生器
    本文主要介紹利用FPGA的自身的特性實現隨機數發生器,在Virtex-II Pro開發板上用ChipScope觀察隨機數序列,以及在PCIe4Base(基於Virtex-4 FPGA)上實現。
  • 下一代Tor通信將用分布式隨機數生成器加密
    當前,由於TOR(洋蔥網絡)的通信安全性不斷受到挑戰,TOR項目團隊開始為下一代的洋蔥路由網絡尋找新的加密途徑,例如在隨機數字的生成方面。TOR項目團隊開始為下一代的洋蔥路由網絡尋找新的加密途徑  在通信安全領域,由於要生成隨機、不可預測的加密密鑰,因此對於隨機數的應用是必不可少的。
  • 坑娃神器,如何用Excel批量製作20以內加法-隨機數(內附公式)
    小編以前講過如何在Excel中製作加減乘除的達標計算題(小學生必備),有同學在問,如何生成在規定範圍內的數據(比如20以內的加減法,應該是小學低年級用),前面錄過一個視頻,但是忘記把公式貼出來了,所以今天就乾脆寫個文章,簡單介紹下。
  • 前官員修改隨機數生成器操縱彩票中獎號碼
    去年4月美國前跨州彩票協會信息安全負責人Eddie Raymond Tipton被控纂改了生成隨機數的電腦
  • 考生座位隨機安排,在Excel表格中快速實現
    情況一:按順序近排座位1、在C5單元格輸入公式:=INT((ROW()-5)/30)+1&"考場" ,分配第一個考生的考場;公式中ROW()為行號,第一個考生在第5行,所以-5,除以30代表每個考場30名考生,用INT函數取計算結果的整數部分後加1,再用&符號連接文本字符,就得到第一個考生考場
  • 9個經典實用的Excel技巧,輕鬆玩轉工作表,薪酬蹭蹭往上長
    Excel有非常多的技巧,想全部用的滾瓜爛熟貌似有點困難。但是把日常用到的技能學到手,你已經和大神沒什麼區別了,足以成為圈內的佼佼者。1、快速輸入日期時間每天都和日期時間打交道,那你知道如何在excel中快速輸入嗎?
  • 1個GUI界面,隨機生成若干姓名並保存為Excel,python如何實現?
    如何用Python生成若干個隨機姓名?男女取名有方法,不能千篇一律之前,也提到過,我們在一些項目中,需要若干個隨機姓名,為了節省我們的測試時間,讓測試更加逼真,就定義了一個函數來生成隨機姓名。如下圖姓名列是我們利用程序隨機生成的如何將我們定義函數生成的隨機姓名寫入到Excel表格中呢?這就是我們今天要利用Python實現的效果。
  • 程序丨遊戲編程中的數學——隨機數字生成(RNG)的黑暗秘密
    翻譯:王成林(麥克斯韋的麥斯威爾)審校:黃秀美(厚德載物)大家好,你們能聽到我講話嗎?這個演講的內容是介紹RNG(隨機數字生成)的一些黑暗秘密。如你在大屏幕上看到的,Squirrel已經介紹了一些RNG的基礎概念。首先,我想詳細講解幾點。
  • 一個簡單的隨機點名程序
    今天教大家做一個簡易的隨機點名程序,作者水平有限,望大家包含。衝衝衝!!!
  • Excel隨機生成日期時間數值及文本格式轉換的自動列印單據案例
    案例:為了方便統計人員列印單據需要,通過兩天時間,初步簡單設計了一套涉及列印單據涉及的相關隨機函數及表格設計思路操作:一、數據源自動生成表內的下列為標題名稱如下:1.日期欄,區間2019年3月1日至31日,隨機日期函數如下:=TEXT(RAND()*("2019-3-31"-"2019-3-1")+"2019-3-1"
  • 詳細講解Excel中的RAND隨機函數和ROUND四捨五入函數
    例如用隨機函數彌補數據不足,用四捨五入函數解決數值的精準程度。下面就逐一講解這幾個函數給大家。1、RAND隨機函數功能:產生一個大於0,小於1的均勻分布的隨機數。案例:在A1:E12單元區域利用RAND生成一組隨機0到1之間的隨機小數。
  • 如何用Python生成若干個隨機姓名?男女取名有方法,不能千篇一律
    用Python帶你1步搞定還帶大家將百家姓的起源內容存入到了Excel中Python用wordcloud展示,有你名字嗎?怎麼樣?結果中找到你的名字了嗎?今天,我們看下如何利用前面生成的這3個Excel表格。
  • Matlab矩陣的生成
    不管是任何矩陣(向量),我們可以直接按行方式輸入每個元素:同一行中的元素用逗號(,)或者用空格符來分隔,且空格個數不限;不同的行用分號(;)分隔。所有元素處於一方括號([ ])內;當矩陣是多維(三維以上),且方括號內的元素是維數較低的矩陣時,會有多重的方括號。
  • Java (switch+隨機數+骰子小遊戲)
    喜歡荒野求生,想成為食物鏈頂端的男人,但實在下不了口,鑽木取火過,後來我感覺還是時時刻刻拿個打火機吧。喜歡做飯,奈何倒給狗都不吃。喜歡喝一點啤酒,人家踩箱喝,我三瓶就倒。喜歡WWE,但還是命重要。喜歡自娛自樂,結果單身7年多(大學軍訓求雨,我說:我用五年單身換一場雨,它下了……)。這悲慘的人生是Python給了我最後曙光,它讓我重拾自信。
  • 跟我學解Python題-隨機數列表去重
    明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1~1000 之間的隨機整數(N<=1000),N是用戶輸入的,對於其中重複的數字,只保留一個,把其餘相同的數字去掉,不同的數對應著不同的學生的學號,然後再把這些數從小到大排序,按照排好的順序去找同學做調查,請你協助明明完成