matlab中如何按照給定的概率密度函式產生隨機數呢

2021-03-22 03:27:01 字數 3326 閱讀 8495

1樓:匿名使用者

可以看一些關於舍選法,反變換法。

就是通過一些變換,將均勻隨機數,變成一定概率密度的隨機數。

主要還是反變換法,不過反變換法一般要求被積函式可積。

goodluck

matlab用randn產生隨機數並畫出概率密度函式

2樓:匿名使用者

產生隨機數用randn你知道我就不說了。畫出概率密度圖可以用histogram

matlab 中怎樣按概率產生隨機數?

3樓:匿名使用者

function y=genrannum1(n)%本函式產生n個指定概率分布的隨機數,本例中的%概率密度函式為f(x)=(1-x*x)/(1+x*x)/(pi-2) |x|<1

min=-1;% 概率密度區間的左邊界

max=1; %概率密度區間的右邊界

uper=1/(pi-2);%概率密度函式的上確界%rand('state',0);sum(100*clock)for k=1:n

x1= min + (max-min).*rand(1);

x2=uper*rand(1);

x3=(1-x1*x1)/(1+x1*x1)/(pi-2); %此處為指定的概率密度函式f(x)的位置

while x2>x3

x1= min + (max-min).*rand(1);

x2=uper*rand(1);

x3=(1-x1*x1)/(1+x1*x1)/(pi-2);

endy(k)=x1;end

4樓:匿名使用者

a=randsrc(1,3,1:100)

這個函式的意思是產生乙個1*3的隨機數組,取值是從1到100等概率的。

設s為a的某個元素,你可以假定:

如果 s<=40 則 s'=a

如果 41<=s<=65 則s'=b

如果 66<=s<=100 則 s'=c這樣做可能比較麻煩,應該有直接實現以上功能的函式。

你可以查一下。

我也是初學者,共同學習,望採納

5樓:

採用輪盤賭法,把100看做乙個輪盤,則產生1-40之間的數概率為40%,41到65之間的數概率為25,66到100之間的概率為35%。

matlab怎樣產生按某概率函式分布的隨機數

6樓:休閒居大偉

對於你的問題,如果 y 是m*n的服從0~1均勻分布的隨機矩陣: y = rand(m,n) 用統計工具箱, y = unifrnd(0,1,m,n)

7樓:跳出桎梏

matlab統計工具箱中提供了slicesample函式,用來生成任意指定分布隨機數

rand=slecesample(initial,nasample,『pdf』,pdffun)

initial:指定乙個初始值

nasample:產生隨機數的個數

『pdf』:概率分布函式

pdffun: 概率分布函式的控制代碼

matlab:通過概率密度函式產生隨機數的函式編寫 10

8樓:匿名使用者

只需一行**足矣:

function r=jyfb(a,b,varargin)r=rand(varargin)*(b-a)+a;

注意:使用了可變參數列,呼叫時可以像rand函式那樣指定維數從而產生乙個隨機數組,例如

jyfb(3,4)

產生乙個3-4之間均勻分布的隨機數,

r=jyfb(3,4,1000,1);

產生乙個1000x1的隨機數組,其元素在3-4之間均勻分布。

matlab中,求已知概率密度函式的隨機數生成,概率密度如下

9樓:匿名使用者

n=10000; %需要隨機數的個數

a=zeros(n,1); %存放隨機數的數列

n=0;

f1=@(t) 1./(1.2*pi*(1+5*(t-7.3).^2));

f2=@(t) 1./(1.05*pi*(1+6*(t-8.2).^2));

tt=linspace(0,24,1000);

ff=f1(tt).*(tt<=7.5)+f2(tt).*(tt>7.5);%根據公式計算概率密度

s=trapz(tt,ff);  %計算整個區間概率密度的積分

ff=ff/s;         %歸一化概率密度

while n

一下是某一次執行的結果,可以看到生成的隨機序列的統計直方圖和公式曲線是符合的

如何根據概率密度函式生成隨機數

已知乙個概率密度函式f(x),如何產生對應的隨機數?能不能給個例子或者講義,發在我郵箱409538088@**.***

10樓:銜尾貓寶貝

一般的方法是先產生[0,1]均勻分布隨機數,然後利用分布函式的反函式求對應的隨機數.離散情形和連續情形有所不同。 例如指數分布f(x)=1-exp(-ax),反函式為s(u)=-(1/a)ln(1-u),先產生[0,1]均勻分布隨機數u,帶入s(u),得到指數分布隨機數。

matlab怎麼生成離散截斷高斯密度函式的隨機數。給點參考意見。 10

11樓:devil冷月

要生成n個離散截斷高斯密度函式的隨機數

1、首先用normrnd函式生成n個高斯隨機數

2、剔除截斷區間外的隨機數,例如區間為[0,5],將小於0,大於5的數去掉,剩餘資料長度記為k;

3、繼續利用normrnd函式生成n-k個高斯隨機數,剔除截斷區間外的隨機數,並將其與2的資料合併,計算其資料長度,記為k;重複步驟3直到n-k為0;

n=1000 %生成n個截斷高斯離散隨機資料

a=normrnd(2,3,1,n); %高斯分布均值為2,標準差為3

a=a(a<5&a>0); %截斷區間[0,5]

while 1

k=n-size(a,2)

if k==0

break;

endb=normrnd(2,3,1,k);

b=b(b<5&b>0);

a=[a,b];

這是我的理解···不知道對不對···答題不易,望採納

matlab打亂資料,matlab中如何將某一陣列中資料進行打亂,有沒有相應的函式,謝謝,線上等。

a rand 1,20 隨即生成長度為100的陣列 randindex randperm length a 隨即打亂陣列索引 a a randindex 用新的索引構造打亂後的陣列 求大神matlab中如何打亂二維陣列中已有的排序 其實就是打亂行的順序,很簡單 a 0 0 0 10 2 0 31 0...

matlab中edge的用法,matlab中的edge函式入口引數如何設定?

bw edge i 採用灰度或一個二值化影象i作為它的輸入,並返回一個與i相同大小的二值化影象bw,在函式檢測到邊緣的地方為1,其他地方為0。bw edge i,sobel 自動選擇閾值用sobel運算元進行邊緣檢測。bw edge i,sobel thresh 根據所指定的敏感度閾值thresh,...

在matlab中如何輸出函式的影象

如果要畫y x 3 x 2 x 5在 20,20 上的影象,可利用以下方法,繪畫區間可以自己定義 方法一 利用plot函式來繪畫影象 x 0 0.1 20 規定繪畫區間 從 20畫到20,中間以0,1為間隔 y x.3 x.2 x 5 確定要繪畫的函式,注意不要漏了 plot x,y 方法二 利用e...