MATLAB生成隨機數總結

華子任發表於2014-06-10

1,rand 生成均勻分佈的偽隨機數。分佈在(0~1)之間
  語法:rand(m,n)生成m行n列的均勻分佈的偽隨機數
             rand(m,n,'double')生成指定精度的均勻分佈的偽隨機數,引數還可以是'single'
             rand(RandStream,m,n)利用指定的RandStream生成偽隨機數
            
2,randn 生成標準正態分佈的偽隨機數(均值為0,方差為1)
   主要語法:和上面一樣
  
3, randi 生成均勻分佈的偽隨機整數
   主要語法:randi(iMax)在開區間[1,iMax]上生成均勻分佈的偽隨機整數
             randi(iMax,m,n)在開區間[1,iMax]生成mXn型隨機矩陣
             r = randi([iMin,iMax],m,n)在開區間[iMin,iMax]生成mXn型隨機矩陣
            
    以上3個函式都是根據標準偽隨機數發生器的內部狀態產生的,所以如果把發生器設定為初始狀態,會得到相同的隨機數,但如果改變了狀態,得到的結果就是不同的;而在matlab開啟時,發生器復位到初始狀態,所以用上面3個函式得到的結果將是一樣的
如我的matlab在開啟時輸入以下命令將得到相同的隨機數:
>> randn(3)

ans =

   0.537667139546100   0.862173320368121  -0.433592022305684
   1.833885014595087   0.318765239858981   0.342624466538650
  -2.258846861003648  -1.307688296305273   3.578396939725761

>> randn(3)

ans =

   2.769437029884877   0.725404224946106  -0.204966058299775
  -1.349886940156521  -0.063054873189656  -0.124144348216312
   3.034923466331855   0.714742903826096   1.489697607785465

>> randn(3)

ans =

   1.409034489800479  -1.207486922685038   0.488893770311789
   1.417192413429614   0.717238651328838   1.034693009917860
   0.671497133608081   1.630235289164729   0.726885133383238
  
   如果想將發生器復位到一個固定狀態,可以使用如下命令
  randn('seed',0);
   randn(3)
   以上兩條命令將總是得到一樣的隨機數。
   上述命令已經在7.7以後摒棄了(但仍可繼續用),7.7以後可以使用randstream函式,如下
   reset(RandStream.getDefaultStream)
  
   一般情況下,隨機數都是從預設隨機數流中得到資料的,而可以建立自己的資料流物件,並可以從自己的資料流物件中得到隨機數,詳見randstream函式。
   
    如果希望matlab在不同程式段產生不同的隨機資料,可以將預設資料流設定為基於時鐘的,方法為
    RandStream.setDefaultStream ...
     (RandStream('mt19937ar','seed',sum(100*clock)));

normrnd是自己可以指定均數和標準差的正態分佈。

 

另外,Matlab隨機數生成函式主要包括:

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

binornd 二項分佈的隨機數生成器    

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

exprnd 指數分佈的隨機數生成器   

frnd f分佈的隨機數生成器   

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

geornd 幾何分佈的隨機數生成器   

hygernd 超幾何分佈的隨機數生成器   

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

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

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

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

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

normrnd 正態(高斯)分佈的隨機數生成器   

poissrnd 泊松分佈的隨機數生成器   

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

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

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

http://baike.baidu.com/link?url=1URFkJkoMM_MQqKgZELom1yFooNAcBZgc4AaJAHLp9RbEfIu0ZYNR74JUQ5Qx2za9fUFgl_wTmShTmTNO9a2VK

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

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

資源來自:http://kalmanfans.is-programmer.com/posts/31988.html

相關文章