Matlab產生隨機數函式小結

yu199609發表於2019-08-24

1.一些常用函式:
(1)rand(······)
它是生成0~1之間(開環,不包含0和1兩個數)均勻分佈的偽隨機數,也就是無窮次試驗其中每個數產生的概率是一樣的。
R = rand(N) % 生成N×N的矩陣隨機數,其中每個元素位於0~1之間
R = rand([M,N,P,…]) % 生成M×N×P×…的矩陣隨機數
R = rand(M,N,P,…) % 同上,中括號不是必須
R = rand(…, CLASSNAME) % 生成CLASSNAME型別的隨機數,如 ‘double’ or ‘single’

(2)randi(······)
randi(N) 是生成(0,N]間均勻分佈的偽隨機數,並且數都是整數,所以每個數是位於1到N之間。
R = randi(iMax) % 生成1:iMax之間的均勻分佈隨機數
R = randi(iMax,m,n) % 生成m×n的1:iMax之間的均勻分佈隨機數
R = randi([iMin,iMax],m,n) % 生成m×n的iMin:iMax之間的均勻分佈隨機數

(3)randn(······)
它生成的隨機數整體概率為正態分佈,均值為0,方差為1;
R = randn(N) % 生成N×N個正態分佈的隨機數
R = randn(M,N) % 生成M×N個正態分佈的隨機數

   eg:產生16個均值為0.8,方差為0.4的正態分佈隨機數(即:4階正態分佈矩陣)。
       format short   %恢復預設輸出格式 
       y=0.8+sqrt(0.4)*randn(4)

(4)rng(······)
讓每次程式執行生成的隨機數都一樣

   eg(1).rng('default');
       R = rand(1,5); % 每次程式執行生成恆定的1×5隨機數
   eg(2).s = rng;
           R1 = rand(1,5);
           rng(s);
           R2 = rand(1,5); % R1和R2隨機數一樣 

(5)linspace(······)
產生線性間隔向量
建立一個從a到b,共n個向量
linspace(a,b,n);

(6)binornd(n,p,[M,N,P,…])
生成的隨機數服從引數為(N,p)的二項分佈,這些隨機數排列成MNP… 階矩陣。如果只寫M,則生成M*M矩陣

(7)exprnd(MU)
服從引數為MU的指數分佈。

2.其他生成隨機數函式
exprnd 指數分佈的隨機數生成器
exprnd(mu,m,n); 在(0,mu)之間有接近70%的資料,越接近0資料越多

geornd 幾何分佈的隨機數生成器
geornd(P,M,N,…) returns an M-by-N-by-… array.

hygernd 超幾何分佈的隨機數生成器
hygernd(M,K,N,MM,NN,…) returns an MM-by-NN-by-… array.

normrnd 正態(高斯)分佈的隨機數生成器
normrnd(MU,SIGMA,M,N,…) returns an M-by-N-by-… array.

poissrnd 泊松分佈的隨機數生成器
poissrnd(LAMBDA,M,N,…) returns an M-by-N-by-… array.

unidrnd 離散均勻分佈的隨機數生成器

unifrnd 連續均勻分佈的隨機數生成器

betarnd 貝塔分佈的隨機數生成器

chi2rnd 卡方分佈的隨機數生成器

frnd f分佈的隨機數生成器

gamrnd 伽瑪分佈的隨機數生成器

lognrnd 對數正態分佈的隨機數生成器

nbinrnd 負二項分佈的隨機數生成器

ncfrnd 非中心f分佈的隨機數生成器

nctrnd 非中心t分佈的隨機數生成器

ncx2rnd 非中心卡方分佈的隨機數生成器

raylrnd 瑞利分佈的隨機數生成器

trnd 學生氏t分佈的隨機數生成器

weibrnd 威布林分佈的隨機數生成器

如果要生成除上面這些之外的隨機數,需要嚴密的數學推導,利用這些分佈進行構造.
如果推導不出,還可以利用大數定律進行生成,通過一組隨機數確定一個隨機數的方式。

相關文章