一、rand函數的用法
- R=rand(n) 產生一個N*N的隨機矩陣,其中的元素來自0-1均勻分佈
- R=rand([M,N]) 產生一個M*N的隨機矩陣
- R=rand(size(A)) 產生一個同矩陣A大小一致的隨機矩陣
舉例如下:
r=a+(b-a).*rand(100,1);//產生一個[a,b]之間的100*1的隨機矩陣
二、randi函數
- R=randi(IMAX,N) 產生一個N*N的矩陣,其中矩陣的元素均來自於離散均勻分佈1:IMAX之間
- R=randi(IMAX,M,N)或者randi(IMAX,[M,N]) 產生一個M*N的隨機整數矩陣
- R=randi([IMIN,IMAX],[M,N]) 產生一個IMIN:IMAX之間的M*N的隨機整數矩陣
隨機數字序列是由均勻分佈的僞隨機數產生器的間隔狀態決定。我們可以通過控制默認的數據流來控制隨機數字序列的產生。
將默認流重置到固定的狀態可以產生重複的數字序列,將stream置於不同的狀態會導致不同的計算。
r=randi(10,100,1,'unit32');
r=randi([-10,10],100,1);
//通過結果可以發現,i1和i2產生的隨機數組完全相同,這是因爲默認流的狀態設置爲相同的狀態。
defaultStream=RandStream.getDefaultStream;
savedState=defaultStream.State;
i1=randi(10,1,5);
defaultStream.State=savedState;
i2=randi(10,1,5);
三、randn函數的用法
- randn(N) 產生標準正態分佈的N*N的隨機矩陣
- randn([M,N]) M*N的隨機矩陣
randn(size(A)) 同A一致的隨機矩陣
用法用例:
//產生一個均值爲1,標準差爲2的正態分佈的隨機數組
r=1+2.*randn(100,1);
四、randperm函數與sprand函數
- randperm(n) 產生一個1-n之間的隨機順序
- sprand 用於產生隨機稀疏矩陣(服從0-1分佈)
- sprand(S) 用於產生同S結構相同的隨機稀疏矩陣,但元素都是0-1之間的隨機數
- sprand(m,n,density) m*n的隨機稀疏矩陣,它的非零元素個數近似與m*n*density,density在0-1之間,且不要過大