MATLAB中常用的幾種隨機數生成函式
1:rand函式的用法
命令:rand(N),rand(M,N)等
對於rand(N),通過help rand得到的解釋是:R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1).
即rand(N)是生成一個符合標準均勻分佈的矩陣,其值位於開區間0~1。
由概率論知識可知,當一個序列服從(0,1)區間的標準均勻分佈時,其期望為0.5,方差為1/12(0.08333)。
可以用程式檢驗一下:
a=rand(1,10);
b=rand(1,1000);
c=rand(1,100000);
mean(a)
ans =0.5890
mean(b)
ans =0.4900
mean(c)
ans =0.5000
var(a)
ans =0.0634
var(b)
ans =0.0834
var(c)
ans =0.0833
可見,隨著資料長度的增加,rand函式生成的資料期望越來越接近0.5,方差越來越接近1/12。
若想生成在區間[a,b]服從標準均勻分佈的序列時,可用公式:r=a+(b-a).*rand(M,N),如下例:
%%在區間[10,100]服從標準均勻分佈,其期望為55,方差為90^2/12=675
r=10+90.*rand(1,100000);
mean(r)
ans =54.9954
var(r)
ans =673.8957
2:randi函式的用法
命令:randi(IMAX,N),randi(IMAX,M,N),randi(IMAX,[M,N]),randi([IMIN,IMAX],…)等
對於randi(N),通過help randi得到的解釋是:
R = randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.
R = randi([IMIN,IMAX],…) returns an array containing integer values drawn from the discrete uniform distribution on IMIN:IMAX
即randi生成1:IMAX或者IMIN:IMAX之間的離散均勻分佈的整數矩陣。如:
r1=randi(10,2,5)%生成資料在1:10之間的2*5矩陣
r1 =
7 1 3 7 5
6 6 10 5 1
>> r2=randi([10,100],2,5)%生成資料在10:100之間的2*5矩陣
r2 =
93 49 51 89 63
53 95 98 36 18
在進行通訊系統模擬時,可以利用randi來生成0,1位元序列。如msg_bit=randi([0,1],1,length_tran_msg};
3:randn函式的用法
命令:randn(N),randn(M,N)等
對於randn(N),通過help randn得到的解釋是:R = randn(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard normal distribution.
即randn(N)是生成一個符合標準正態分佈的矩陣,其值位於開區間0~1
%生成一組服從(0,1)標準正態分佈的序列
r=randn(1,100000);
>> mean(r)%均值
ans =
-0.0015
>> var(r)%方差
ans =
0.9975
hist(r,1000)%將資料分成1000個組並進行繪製
4:隨機資料生成控制語句
在早期的MATLAB版本中,用’seed’,’state’,’twister’等命令控制隨機資料的生成,但是這些命令將在未來的版本中被移除。現在用rng語句來代替這些命令,以控制隨機資料的生成。見MATLAB中的updating your random number generator syntax
下面介紹rng的使用:
1)當使用rand,randi,randn語句時,其預設的是每次生成的資料不同(使用不同的隨機數生成種子)
%前後2次呼叫rand(1,5)生成不同的資料
rand(1,5)
ans =
0.8147 0.9058 0.1270 0.9134 0.6324
rand(1,5)
ans =
0.0975 0.2785 0.5469 0.9575 0.9649
而如果你想使得隨機數生成命令返回預設狀態,只需在隨機資料生成命令前加上:
rng('default');
即可。
2)如果想使得生成的隨機資料每次都相同,則可以將隨機數生成環境儲存下來
s=rng;%儲存環境
i1=randi(10,1,5)
i1 =
2 5 10 8 10
rng(s)%呼叫之前的環境,則下次生成相同的資料
i2=randi(10,1,5)
i2 =
2 5 10 8 10
i3=randi(10,1,5)
i3 =
7 1 9 10 7
rng(s)
i3=randi(10,1,5)
i3 =
2 5 10 8 10
3)若想依據當前的時間來生成一個種子,進而生成每次不同的隨機資料,可以用以下命令:
rng('shuffle');
randi(10,1,5)
ans =
9 7 9 1 4
randi(10,1,5)
ans =
2 8 3 10 1
相關文章
- MATLAB生成服從各種分佈的隨機數函式Matlab隨機函式
- 幾種生成隨機數方法隨機
- matlab中的產生隨機數的rand函式Matlab隨機函式
- 【matlab程式設計】matlab隨機數函式Matlab程式設計隨機函式
- matlab 生成隨機數序列Matlab隨機
- MATLAB中的常用函式Matlab函式
- Matlab產生隨機數函式小結Matlab隨機函式
- matlab 隨機數種子Matlab隨機
- 【知識積累】隨機數生成的幾種方法隨機
- matlab生成隨機數小結Matlab隨機
- MATLAB生成隨機數總結Matlab隨機
- 關於matlab生成隨機數Matlab隨機
- Matlab 隨機生成兩個數值之間的隨機數Matlab隨機
- C語言生成隨機數函式的用法C語言隨機函式
- Oracle中生成隨機數的函式(轉載)Oracle隨機函式
- MATLAB中如何生成指定範圍的隨機整數向量Matlab隨機
- MATLAB常用基本數學函式Matlab函式
- matlab之生成不重複的隨機整數Matlab隨機
- PHP生成隨機密碼的幾種方法PHP隨機密碼
- Matlab各種隨機數彙總Matlab隨機
- matlab中的偽隨機數原理Matlab隨機
- MATLAB 生成exe 的幾種方法Matlab
- numpy各種生成隨機數的方法隨機
- Java隨機數的幾種有趣用法Java隨機
- Matlab生成隨機矩陣Matlab隨機矩陣
- Oracle取隨機數函式Oracle隨機函式
- python中函式引數傳遞的幾種方法Python函式
- 幾種常見窗函式及其MATLAB實現函式Matlab
- javascript中常用的幾種立即執行函式JavaScript函式
- 隨機變數函式的分佈隨機變數函式
- JS中建立函式的幾種方式JS函式
- AppDelegate中幾個常用回撥函式的呼叫時機APP函式
- 生成隨機數隨機
- Python中如何生成隨機數?Python隨機
- AS使用Random函式建立隨機數random函式隨機
- matlab常用函式與常用指令大全Matlab函式
- matlab中怎樣隨機生成一個最大值為N的正整數??Matlab隨機
- mysql迴圈插入資料、生成隨機數及CONCAT函式MySql隨機函式