關於matlab生成隨機數
一,matlab中生成隨機數主要有三個函式:rand, randn,randi
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)在開區間(0,iMax)生成均勻分佈的偽隨機整數
randi(iMax,m,n)在開區間(0,iMax)生成mXn型隨機矩陣
r = randi([iMin,iMax],m,n)在開區間(iMin,iMax)生成mXn型隨機矩陣
示例驗證:
均值分佈
概率分佈圖:
y=rand(1,3000000);
hist(y,2000);
散點圖:
y=rand(1,3000000);
plot(y)
正態分佈
概率分佈圖:
y=randn(1,3000000);
hist(y,2000);
散點圖:
y=randn(1,3000000);
plot(y);
二,關於隨機種子,偽隨機數的重複生成
正常情況下每次呼叫相同指令例如rand生成的偽隨機數是不同的,
例如:
rand(1,3)
rand(1,3)
matlab的輸出為:
ans =
0.139043482536049 0.734007633362635 0.194791464843949
ans =
0.602204766324215 0.937923745019422 0.149285414707192
如何使兩個語句生成的隨機數相等呢?
Matlab幫助中的下面章節有所敘述:
Managing the Default Stream
管理預設(預設)流
rand, randn, and randi draw random numbers from an underlying random number stream, called the default stream. The @RandStream class allows you to get a handle to the default stream and control random number generation.
rand,randn,和randi 從一個基礎的隨機數流中得到隨機數,叫做預設流。你可以通過 @RandStream 類得到預設流的控制程式碼從而控制隨機數的生成。
Get a handle to the default stream as follows:
以下為得到預設流控制程式碼的程式碼:
defaultStream=RandStream.getDefaultStream defaultStream = mt19937ar random stream (current default) Seed: 0 RandnAlg: Ziggurat
Return the properties of the stream object with the get method: 用get方法返回流物件屬性:
get(defaultStream) Type: 'mt19937ar' NumStreams: 1 StreamIndex: 1 Substream: 1 Seed: 0 State: [625x1 uint32] RandnAlg: 'Ziggurat' Antithetic: 0 FullPrecision: 1
The State property is the internal state of the generator. You can save the State ofdefaultStream.
state屬性是發生器的內部狀態,你可以儲存預設流的狀態:
myState=defaultStream.State;
Using myState, you can restore the state of defaultStream and reproduce previous results.
利用myState你可以恢復預設流狀態重新生成前面的結果:
myState=defaultStream.State; A=rand(1,100); defaultStream.State=myState; B=rand(1,100); isequal(A,B) ans = 1
你也可以直接使用@RandStream 類的reset靜態方法重置種子狀態來獲取相同的隨機生成序列,下面是示例程式碼:
stream = RandStream.getDefaultStream;%獲取預設的隨機種子(暫時這麼叫,幫助有詳細解釋)
reset(stream);%重置
rand(stream,1,3)
reset(stream);%重置
rand(stream,1,3)
matlab的輸出為:
ans =
0.814723686393179 0.905791937075619 0.126986816293506
ans =
0.814723686393179 0.905791937075619 0.126986816293506
可以看出生成的隨機碼是相等的,這樣可以用於重複實驗上來
轉載於http://blog.sina.com.cn/s/blog_4b94ff130100edwh.html
相關文章
- matlab 生成隨機數序列Matlab隨機
- matlab生成隨機數小結Matlab隨機
- MATLAB生成隨機數總結Matlab隨機
- Matlab 隨機生成兩個數值之間的隨機數Matlab隨機
- matlab之生成不重複的隨機整數Matlab隨機
- Matlab生成隨機矩陣Matlab隨機矩陣
- 一道關於隨機數生成的題目隨機
- MATLAB中常用的幾種隨機數生成函式Matlab隨機函式
- 生成隨機數隨機
- matlab生成0,1隨機序列Matlab隨機
- MATLAB設定隨機數Matlab隨機
- matlab 隨機數種子Matlab隨機
- MATLAB中如何生成指定範圍的隨機整數向量Matlab隨機
- JavaScript 生成隨機數JavaScript隨機
- mysql生成隨機數MySql隨機
- matlab產生隨機數或隨機矩陣Matlab隨機矩陣
- python生成隨機數、隨機字串Python隨機字串
- MATLAB生成服從各種分佈的隨機數函式Matlab隨機函式
- MATLAB獲取隨機數——randMatlab隨機
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- 【matlab程式設計】matlab隨機數函式Matlab程式設計隨機函式
- 隨機數生成器隨機
- java隨機數生成原理Java隨機
- 生成隨機整數方法隨機
- python 隨機數生成Python隨機
- C++生成隨機數C++隨機
- Matlab各種隨機數彙總Matlab隨機
- matlab中的偽隨機數原理Matlab隨機
- Linux Shell 生成隨機數和隨機字串Linux隨機字串
- 微信小程式生成隨機數微信小程式隨機
- 更安全的隨機數生成隨機
- 幾種生成隨機數方法隨機
- 使用Math類生成隨機數隨機
- 無重複隨機數生成隨機
- PHP 生成更好的隨機數PHP隨機
- 在oracle 中生成隨機數Oracle隨機
- Golang生成區間隨機整數Golang隨機
- Python生成隨機數random模組Python隨機random