PDA

查看完整版本 : [求助]菜鸟求助--rand()问题


GoldSpear
2008-10-04, 11:25
发现用rand()产生的伪随机数太有规律了
每次500点的 dla分形都能做出一模一样的图来。。。:sweat:

请问下有没有办法在Matlab中产生与机器时间关联的随机数,即种子每次不同

大谢~~~

meteora1005
2008-10-04, 12:01
rand是0-1间的均匀分布的生成函数,还有其它分布的生成函数,你自己看一下。

GoldSpear
2008-10-04, 13:32
re ls

我的问题不在于随机数的分布
而是如何改变产生伪随机数的种子,用rand()的话,每次初始运行Matlab时dla做出的图都一样,因为rand()总是从相同的种子开始产生,比如:第一个总是0.9501,第二个总是0.2311,以此类推。。。
这个对monte carlo的结果会有一定的影响

当然一种办法是多重套用随机数产生命令,从而每次获得不同的初始值,但这个办法依然很局限

C中的解决办法很简单,即用即时的机器时间作为种子,这样保证了更高的随机性

所以我的问题是matlab中有没有类似的办法

fanxing39
2008-10-05, 02:01
好问题!:tongue:

FFirX
2008-10-05, 10:55
rand('seed',second(now)) %先由当前时间秒数产生种子
rand() %这里就可以用rand()产生随机数了
%为了得到不相同的结果,当然也可以和hour()和minate()一同使用,以保证种子在很大范围内不同

GoldSpear
2008-10-05, 15:40
谢ls,和lss,呵呵