http://blog.163.com/symphony_sol/blog/static/30279623200751841822500/ 
兩種不同的隨機(jī)數(shù)算法
seed是matlab4的,matlab5及以后用的是state

seed 現(xiàn)在也是有的,
實(shí)際上現(xiàn)在用的隨機(jī)數(shù)是偽隨機(jī)數(shù),由一定的規(guī)則產(chǎn)生
比如z_{k+1}=f(z_{k}),z_{k}即為我們得到的隨機(jī)數(shù),
比如之前得到的隨機(jī)數(shù)是0.5, 再用randn命令得到的隨機(jī)數(shù)是0.6
那么如果下次得到隨機(jī)數(shù)0.5,那么之后的隨機(jī)數(shù)還是0.6
seed是產(chǎn)生這個(gè)隨機(jī)數(shù)的種子,也就是初始值z(mì)_{0},seed不同,得到的隨機(jī)數(shù)列也不同,
取定了seed之后,隨機(jī)數(shù)列也就確定了,只不過(guò)這個(gè)數(shù)列非常大,看起來(lái)就象是隨機(jī)產(chǎn)生的,
舉例:
seed=x1
得到隨機(jī)數(shù)列 y1,....ym
seed=x2
得到隨機(jī)數(shù)列 z1,.....zn
關(guān)于state:指定隨機(jī)數(shù)的狀態(tài),
我的理解是類似于指定了這個(gè)隨機(jī)數(shù)列數(shù)組的下標(biāo)
比如:randn('state',100)
然后產(chǎn)生一個(gè)隨機(jī)數(shù)為 r0
然后中間再產(chǎn)生了若干隨機(jī)數(shù)
然后再鍵入命令randn('state',100)
這時(shí)再產(chǎn)生的隨機(jī)數(shù)還是r0
http://blog.sina.com.cn/s/blog_6c00b0e30100rmyy.html 
(2)RANDN產(chǎn)生偽隨機(jī)數(shù)的語(yǔ)法:
發(fā)生器的狀態(tài)決定所產(chǎn)生數(shù)的序號(hào)。
S = RANDN('state') 是一個(gè)二元向量,包括標(biāo)準(zhǔn)發(fā)生器的狀態(tài);
RANDN('state',S):設(shè)置發(fā)生器的狀態(tài)為S(即標(biāo)準(zhǔn)狀態(tài));
RANDN('state',0):設(shè)置發(fā)生器的初始狀態(tài);
RANDN('state',J):J為整數(shù),設(shè)置發(fā)生器到J階狀態(tài);

(3)MATlAB 4.X應(yīng)用一個(gè)單獨(dú)的種子來(lái)產(chǎn)生隨機(jī)數(shù):
RANDN('seed',0) and RANDN('seed',J)作用與RANDN('state',0)和RANDN('state',J)一樣,但使用Matlab 4.x隨機(jī)數(shù)發(fā)生器。
RANDN('seed'):返回MATlAB 4.X發(fā)生器的當(dāng)前種子。


以上部分是轉(zhuǎn)自其他網(wǎng)友的分析。
下面是我對(duì)這randn或rand的理解。

例如:randn('state',0);,表明選定了一個(gè)初狀態(tài),再定義隨機(jī)數(shù)列x=randn(1,100),x的值會(huì)確定下來(lái),不會(huì)每運(yùn)行一次而產(chǎn)生不同的隨機(jī)數(shù)。
例如: "E:\other\matlab 2007a\work\function\rand_"

a1 =2     3     1
b1 =     4     1     3     2
c1 =   1     3     4     5     2
重新運(yùn)行還是這個(gè)結(jié)果

do_exp_MNIST_SSH_BRE_ITQ中半監(jiān)督hashingSSH 重新跑一次,除了Training timeTest Time還是這個(gè)結(jié)果,因?yàn)橛?/span>rand('seed',0);
rand('seed',0)
randn('state',0): do_exp_MNIST_SSH_BRE_ITQ中CCA-ITQ加randn('state',0)重新跑一次,除了Training timeTest Time還是這個(gè)結(jié)果rand('state',0)不行,因?yàn)镮TQ函數(shù)中用的randn不是rand
20160120谷歌搜索:randperm seed,找一個(gè)連接https://www.mathworks.com/matlabcentral/newsreader/view_thread/171653,有如下語(yǔ)句:If we initialize rand with some seed (say
rand('seed',1)) then the result of randperm(n) is always same after the initialization.
經(jīng)過(guò)如下語(yǔ)句測(cè)試,沒(méi)有任何問(wèn)題:
rand('seed',1);
a = randperm(10);
i=2;
rand('seed',i);
b = randperm(20);
rand('seed',1);
c = randperm(10);
i=2;
rand('seed',i);
d = randperm(20);
sum(a==c)
sum(b==d)