Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-07-11
年龄: 37
帖子: 10
声望力: 17 ![]() |
![]()
发现用rand()产生的伪随机数太有规律了
每次500点的 dla分形都能做出一模一样的图来。。。:sweat: 请问下有没有办法在Matlab中产生与机器时间关联的随机数,即种子每次不同 大谢~~~ |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-05-31
年龄: 38
帖子: 104
声望力: 19 ![]() |
![]()
rand是0-1间的均匀分布的生成函数,还有其它分布的生成函数,你自己看一下。
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-07-11
年龄: 37
帖子: 10
声望力: 17 ![]() |
![]()
re ls
: 我的问题不在于随机数的分布 而是如何改变产生伪随机数的种子,用rand()的话,每次初始运行Matlab时dla做出的图都一样,因为rand()总是从相同的种子开始产生,比如:第一个总是0.9501,第二个总是0.2311,以此类推。。。 这个对monte carlo的结果会有一定的影响 当然一种办法是多重套用随机数产生命令,从而每次获得不同的初始值,但这个办法依然很局限 C中的解决办法很简单,即用即时的机器时间作为种子,这样保证了更高的随机性 所以我的问题是matlab中有没有类似的办法 |
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
好问题!:tongue:
|
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2008-10-04
年龄: 35
帖子: 2
声望力: 0 ![]() |
![]()
rand('seed',second(now)) %先由当前时间秒数产生种子
rand() %这里就可以用rand()产生随机数了 %为了得到不相同的结果,当然也可以和hour()和minate()一同使用,以保证种子在很大范围内不同 |
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-07-11
年龄: 37
帖子: 10
声望力: 17 ![]() |
![]()
谢ls,和lss,呵呵
|
![]() |
![]() |