一、理論准備
matlab函數randn:產生均值為0,方差 σ^2 = 1,標准差σ = 1的正態分布的隨機數或矩陣的函數。
用法:Y = randn(n),返回一個n*n的隨機項的矩陣。如果n不是個數量,將返回錯誤信息。
Y = randn(m,n) 或 Y = randn([m n]),返回一個m*n的隨機項矩陣。
Y = randn(m,n,p,...) 或 Y = randn([m n p...]),產生隨機數組(感覺就是三維數組,請看如下例子)。
1: >> rand(1,2,3)
2: ans(:,:,1) =
3: 0.445586200710899 0.646313010111265
4: ans(:,:,2) =
5: 0.709364830858073 0.754686681982361
6: ans(:,:,3) =
7: 0.276025076998578 0.679702676853675
Y = randn(size(A)),返回一個和A有同樣維數大小的隨機數組。
randn
s = randn('state'),估計和C++里初始化隨機種子一個意思,隨便了。
二、舉例分析
產生一個隨機分布的指定均值和方差的矩陣:將randn產生的結果乘以標准差,然后加上期望均值即可。例如,產生均值為0.6,方差為0.1的一個5*5的隨機數方式如下:
1: x = .6 + sqrt(0.1) * randn(5)
其他類似函數:rand, randperm, sprand, sprandn
三、拓展
用matlab隨機產生60個1到365之間的正數 1+fix(365*rand(1,60)),fix就是取整函數。
用rand函數隨機取100個從-1到1(原來寫成了2)的數x1,x2,...,x = rand(1,100) * 2 - 1。
逗號表示行,分號表示列。