[Matlab]機率論與數理統計:隨機數的產生與應用

來源:互聯網
上載者:User
先來給大家介紹一下Matlab的統計工具箱:Statistics Toolbox。能廣泛支援統計計算任務。

下面介紹一些基本的隨機數產生函數:

分布類型

函數名稱

調用格式

二項分布

binornd

R = binordn(N,P,mm,n);

卡方分布

chi2rnd

R = chi2rnd(N,mm,nn)

指數分布

exprnd

R = exprnd(MU,mm,nn)

F分布

frnd

R = frnd(M,N,mm,nn)

常態分佈

normrnd

R = normrnd(MU,SIGMA,mm,nn)

泊松分布

poissrnd

R = poissrnd(LAMBDA,mm,nn)

學生t分布

trnd

R = trnd(N,mm,nn)

離散均勻分布

unidrnd

R = unidrnd(N,mm,nn)

連續均勻分布

unifrnd

R = unifrnd(A,B,mm,nn)

下面來用Matlab解決一些隨機數應用。

栗1:擲兩個骰子,出現點數之和有多少中可能的結果?其中哪個結果機率最大?其值為多少?

解:擲骰子所出現的點數服從均勻分布,所以建立一下MATLAB程式:

% 擲兩顆骰子出現的點數之和有多少種可能的結果clear csk = 30000;              %擲骰子的次數n = 2;                  %骰子的個數 for m = n:6*n           %從2到12遍曆    cs(m) = 0;           %清零計數器====為何有warning?end                     %結束迴圈 for m = 1:k             %進行k次投擲實驗    s2 = unidrnd(6,1,n);%類比一次投擲n顆骰子的實驗,s2中儲存了本次實驗的結果,即n個數字    s = sum(s2);        %將s2中的數字求和    cs(s) = cs(s)+1;    %將求和的結果求出後,在對應的計數器裡面加一以記錄當前操作end fprintf('點數\t\t次數\t\t機率\n')for m = n:6*n           %顯示實驗結果    fprintf('%2d\t\t%4d\t%0.4f\n',m,cs(m),cs(m)/k)end


其中函數unidrnd(6,1,n)的功能是從集合{1,2,3,4,5,6}中產生一個1×n階的隨機數矩陣。(講解一下MATLAB分號的意義)

再舉一個使用乘法原理的栗子。

題目的需求是:在100件產品中有3件次品。現在從中連取兩次,每次取一件,取後不放回,求下列事件的機率:

(1)兩次都是正品

(2)一件正品,一件次品。

分析略過,程式清單:

 

k = 40000;                  %實驗次數for n = 1:3    cs(n)=0;                %清零計數器end;for m = 1:k    for n = 1:3        cp(n) = 0;          %將次品標記為0    end;    for n = 4:100        cp(n) = 1;          %將正品標記為1    end;        q1 = cp(unidrnd(100));  %抽取第一件商品    if q1==0        cp(1)=1;            %如果第一次抽到的是次品,則次品減少一個    end    q2 = cp(unidrnd(99));    q = q1+q2+1;            %若q為0(0+0)則是兩件次品,若q為1(1+0或0+1)則是一正一次,若q為2(1+1)則是兩件正品    cs(q) = cs(q)+1;enddisp('實驗結果:  兩件次品  一正一次  兩件正品')disp(sprintf('對應機率:  %7.5f  %7.5f   %7.5f',cs(1)/k,cs(2)/k,cs(3)/k))

注意,因為類比的是隨機事件,所以每一次類比的實驗結果都是不完全相等的。

將代碼存檔時需要注意,應盡量符合Matlab的命名規範,否則無法run對應的.m程式。


在這裡簡單說明一下Matlab中各個標點符號的功能:

1 空格:用於輸入變數之間的分隔字元以及數組行元素之間的分隔字元

2 逗號:用於要顯示計算結果的命令之間的分隔字元;輸入變數之間的分隔字元以及數組行元素之間的分隔字元。

3 點號:數值中的小數點

4 分號:不顯示計算結果的命令列的結尾;用於不顯示計算結果的命令之間的分隔字元;用於數組元素行之間的分隔字元。

5 冒號:產生一維數值數組,表示一維數組的全部元素或多維陣列的某一維的全部元素

6 百分比符號:用於注釋的前面

7 單引號:括住字串

8 圓括弧:引用數組元素;用於函數輸入變數列表;用於確定算術運算的先後次序

9 方括弧:構成向量和矩陣; 用於函數輸出資料行表

10 底線:用於一個變數、函數和檔案名稱中的連字號

11 續行號:用於把後面的行和該行串連以構成一個較長的命令

12 艾特號:用於放在函數名前形成函數控制代碼;用於放在目錄名前形成使用者物件類目錄


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.