matlab生成隨機數函式

2021-06-09 19:15:10 字數 3862 閱讀 4161

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...