1.
matlab
函式rand
產生在區間
(0, 1)
的均勻隨機數,它是平均分布在
(0,1)
之間。乙個稱為
seed
的值則是用來控制產生隨機數的次數。均勻隨機數函式的語法為
rand(n),rand(m,n)
,其結果分別產生一矩陣含n×
n個隨機數和一矩陣含m×
n的隨機數。注意每次產生隨機數的值都不會一樣,這些值代表的是隨機且不可預期的,這正是我們用隨機數的目的。我們可利用這些隨機數代入算式中,來表示某段訊號的不規則振幅或是某個事件出現的機率。均勻隨機數其值平均的分布於一區間的特性可以從其統計密度函式
(probabilitydensity function, pdf)
說明。從其
pdf分布類似長條圖的分布,可以看出其每乙個隨機數值出現的機率皆相同,所以它被稱為均勻隨機數。
見以下的例子:
>> rand(1,6) %
第一次使用隨機數產生器
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>>hist(ans) %
看看長條圖的長相
>>plot(ans) %
比較上個圖與這個圖有何差異?何者能代表不規則資料的分布
>> rand(1,6) %
第二次使用隨機數產生器,注意每次產生的隨機數值皆不同
ans =
0.5194 0.8310 0.0346 0.0535 0.5297 0.6711
因為每次隨機數產生的值皆不同,如果因為驗證算式需要確定所使用的隨機數值是相同的,可以利用
seed
這個選項,用以設定使用計算隨機數產生器的起始值,其語法為
rand('seed',n),n
的規定是。其中
n=0有特別意義是使用第一次產生隨機數值的起始值
(=931316785)
,其它的
n值即是所使用起始值。如果使用相同的起始值,則隨機數值會一樣,因為隨機數的計算是依據起始值。請看以下的例子:
>> rand('seed',0) %
將隨機數值的起始值重設,相當於是第一次產生隨機數值
>>rand('seed') %
顯示現在使用的
seed
值=931316785
ans =
931316785
>> rand(2,3) %
注意隨機數值的上下限介於
[0,1] 區間
ans =
0.2190 0.6789 0.9347
0.0470 0.6793 0.3835
>> rand('seed') %
顯示再產生隨機數值所用的
seed=412659990
ans =
412659990
>> rand('seed',0)
>> rand(1,6)
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>> rand('seed',100) %
設定隨機數值的起始值
=100
>> rand('seed')
ans =
100>> rand(2,5)
ans =
0.2909 0.0395 0.3671 0.5968 0.9253
0.0484 0.5046 0.9235 0.8085 0.3628
如果需要產生隨機數值不是介於
[0,1]
區間,可以採用以下步驟將隨機數值從
[0,1]
區間轉換到其它區間。假設要得到一組隨機數值是介於
[2,4]
區間,我們先產生一組隨機數介於
[0,1]
區間 ,再將其值乘以
2,因為
2等於區間上下限的差值
(4-2)
。接著再加上下限值
(2),即可得到隨機數值是介於
[2,4]
區間。例如區間為[a,b],a
為下限值,
b為上限值。則算式如下
x=(b-a)*r + a, 其中
x代表轉換後的隨機數值的陣列。請看下列示範:
>>data_1 = 2*rand(1,500)+2; %
原隨機數值有
500個
>>plot(data_1) %
這個圖是否看來眼熟?
>>axis([1 500 0 6]) %
調整橫軸
/縱軸上下限
>>hist(data_1) %
看看其長條圖
2. matlab
函式randn
產生常態隨機數,它是以高斯分布在隨機數出現的上下限區間。常態隨機數其值分布於一區間的特性可以從其統計密度函式
(pdf)
說明。從其
pdf分布可以看出其每乙個隨機數值出現的機率皆不相同,靠近中間的隨機數值出現的機率比起兩端的值要高,這是一般不規則現象較可能出現的情形,所以它被稱為常態隨機數。由於常態隨機數並非以上下限來定義,它是用資料的平均值和方差定義之。因此在產生一常態隨機數時,需設定平均值和方差的大小。
randn(n)
和randn(n,m)
是分別產生一矩陣含n×
n個隨機數和一矩陣含m×
n的常態隨機數,其平均值為0
方差為1
。
見以下的例子:
>> x=-2.9:0.2:2.9; %
這個例子用到
hist
函式來畫出二種隨機數的分布圖
>> y=randn(1,5000);
>> hist(y,x)
>> title('histogram of normal random data')
>> y1=rand(1,5000);
>> hist(y1,x)
>> title('histogram of uniform random data')
如果需要產生常態隨機數值的平均值和方差並非0和
1,可以採用以下步驟
將平均值和方差做轉換。假設要得到一組常態隨機數值的
平均值為
b
和方差為
a
,我們先產生一組隨機數
r,再將其值乘以方差
a。接著再加平均值
b。算式如下:
x=a*r + b 其中
x代表轉換後的隨機數值的陣列。請看下列示範:
>>data_2 = randn(1,500)+3 %
原隨機數值有
500個
>>plot(data_2) %
這個圖是否看來眼熟?
>>axis([1 500 0 6])
>>hist(data_2) %
看看其長條圖
3.randperm(n)
產生乙個1到n之間自然數的隨機排列
4.randint(m,n,[1 n])
生成m×n的在1到n之間的隨機整數矩陣,其效果與randint(m,n,n+1)相同。
如何用matlab生成隨機數函式
1.matlab 函式 rand 產生在區間 0,1 的均勻隨機數,它是平均分布在 0,1 之間。乙個稱為seed的值則是用來控制產生隨機數的次數。均勻隨機數函式的語法為rand n rand m,n 其結果分別產生一矩陣含n n個隨機數和一矩陣含m n的隨機數。注意每次產生隨機數的值都不會一樣,這...
matlab隨機數的生成
參考 函式含義例項 特例randi 均勻分布的偽隨機整數 i表示integer randi統一左值為1,且可以取到右端點 s1 randi 5,3,3 注 矩陣的尺寸是3 3 元素服從 1,5 的均勻分布 s2 randi 5,6,6,3 注 生成三個矩陣,每個矩陣的尺寸是6 6 元素服從 1,5 ...
MATLAB隨機數生成器
1 rand 生成 0,1 區間上均勻分布的隨機數 基本語法 rand m,n,p 生成排列成m n p 多維向量的隨機數。如果只寫m,則生成m m矩陣 如果引數為 m,n 可以省略方括號。2 randn 生成服從標準正太分布 均值為0,方差為1 的隨機數 基本語法 randn m,n,p,解釋同1...