rand函數

3,用rand函數隨機取100個從-1到1的數x1,x2,...,x = rand(1,100) * 2 - 1

 

 

我打開matlab,輸入rand(3,3),產生一個結果;然後我把matlab整個關掉,再重新打開它,再次輸入rand(3,3),兩次輸出的結果居然一樣,實驗了n次都一樣。但是如果不關閉軟件直接輸入兩次rand(3,3),則出來不同的結果。這個隨機性到底是怎麼回事?注:我使用的matlab6.5
問題補充:有沒有真正的產生隨機數的辦法。
matlab隨機函數rand使用中應注意的問題
rand產生的是0到1(不包括1)的隨機數.
matlab的rand函數生的是僞隨機數,即由種子遞推出來的,相同的種子,生成相同的隨機數.
matlab剛運行起來時,種子都爲初始值,因此每次第一次執行rand得到的隨機數都是相同的.
1.多次運行,生成相同的隨機數方法:
用rand('state',S)設定種子S爲35階向量,最簡單的設爲0就好
例:
rand('state',0);rand(10)
2. 任何生成相同的隨機數方法:
試着產生和時間相關的隨機數,種子與當前時間有關.
rand('state',sum(100*clock))
即:
rand('state',sum(100*clock)) ;rand(10)
只要執行rand('state',sum(100*clock)) ;的當前計算機時間不現,生成的隨機值就不現.
也就是如果時間相同,生成的隨機數還是會相同.
在你計算機速度足夠快的情況下,試運行一下:
rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5);
A和B是相同.
所以建議再增加一個隨機變量,變成:
rand('state',sum(100*clock)*rand(1));
%
據說matlab 的rand 函數還存在其它的根本性的問題,似乎是非隨機性問題.
沒具體研究及討論,驗證過,不感多言.
        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章