MATLAB中 STATE和SEED

ScienceSoft 编程软件评论阅读模式

两种不同的随机数算法

seed是matlab4的,matlab5及以后用的是state

seed 现在也是有的,

实际上现在用的随机数是伪随机数,由一定的规则产生

比如z_{k+1}=f(z_{k}),z_{k}即为我们得到的随机数,

比如之前得到的随机数是0.5, 再用randn命令得到的随机数是0.6

那么如果下次得到随机数0.5,那么之后的随机数还是0.6

seed是产生这个随机数的种子,也就是初始值z_{0},seed不同,得到的随机数列也不同,

取定了seed之后,随机数列也就确定了,只不过这个数列非常大,看起来就象是随机产生的,

举例:

seed=x1

得到随机数列 y1,....ym

seed=x2

得到随机数列 z1,.....zn

关于state:指定随机数的状态,

我的理解是类似于指定了这个随机数列数组的下标

比如:randn('state',100)

然后产生一个随机数为 r0

然后中间再产生了若干随机数

然后再键入命令randn('state',100)

这时再产生的随机数还是r0

http://blog.sina.com.cn/s/blog_6c00b0e30100rmyy.html

(2)RANDN产生伪随机数的语法:

发生器的状态决定所产生数的序号。

S = RANDN('state') 是一个二元向量,包括标准发生器的状态;

RANDN('state',S):设置发生器的状态为S(即标准状态);

RANDN('state',0):设置发生器的初始状态;

RANDN('state',J):J为整数,设置发生器到J阶状态;

(3)MATlAB 4.X应用一个单独的种子来产生随机数:

RANDN('seed',0) and RANDN('seed',J)作用与RANDN('state',0)和RANDN('state',J)一样,但使用Matlab 4.x随机数发生器。

RANDN('seed'):返回MATlAB 4.X发生器的当前种子。

以上部分是转自其他网友的分析。下面是我对这randn或rand的理解。

例如:rand('state',0);,表明选定了一个初状态,再定义随机数列x=randn(1,100),x的值会确定下来,不会每运行一次而产生不同的随机数。

例如: "E:\other\matlab 2007a\work\function\rand_"

a1 =2     3     1

b1 =     4     1     3     2

c1 =   1     3     4     5     2

重新运行还是这个结果

from:  http://blog.163.com/symphony_sol/blog/static/30279623200751841822500/

http://www.cppblog.com/guijie/archive/2012/08/31/188943.html

weinxin
我的微信公众号
分享科研软件、科研方法,为你的科研助力。
ScienceSoft
  • 本文由 发表于 25 3 月, 2015 02:04:17
  • 转载请务必保留本文链接:https://www.sciencesoft.cn/matlab-state-and-seed-use/
Matlab关联问题 编程软件

Matlab关联问题

每次双击.m文件都会自动打开一个matlab程序,而不是在已经打开的Matlab中打开,这样导致操作起来有点慢,解决方法如下: step1:下载这个文件 http://pan.baidu.com/s/...
评论  0  访客  0
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定