當前位置:編程學習大全網 - 編程軟體 - matlab 如何生成指定分布的隨機數?

matlab 如何生成指定分布的隨機數?

抄別的壹個函數給妳吧:

=========================================

function y=dis_rand(x,p,n)

%dis_rand 產生離散分布隨機數

% x:可能取值

% p:取值概率

% n:擬生成隨機數的數目

cp=cumsum(p);

y=zeros(1,n);

for i=1:n

y(i)=x(sum(cp<=rand(1))+1);

end

算法說明:利用matlab中的rand函數獲取區間[0,1]上均勻分布的隨機數,根據希望的分布律把[0,1]區間分段,各段的長度依次為隨機數取各個可能值的概率。當那個均勻分布的隨機數落在其中第i個小段上時,就把第i個可能取值輸出。

=========================================

妳的問題這樣調用:

y=dis_rand([0 0.5 1],[1/3 1/3 1/3],100)

即按照妳要的概率從0,0.5,1三個數字中產生100個隨機數。但我看了下因為rand本身在樣本數少的時候就不是很準確,這樣100個樣本下,1/3概率還是有明顯偏差的。不過所有概率方面的東西要在小樣本下都很難”準確“了。

  • 上一篇:matlab繪制對數平滑曲線
  • 下一篇:樹葉畫手工貼畫並配詩句怎麽畫
  • copyright 2024編程學習大全網