• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab中用rng替换rand(\'seed\',sd)、randn(\'seed\',sd)和rand(\'state\',sd)的通俗 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

matlab中用rng替换rand(\'seed\',sd)、randn(\'seed\',sd)和rand(\'state\',sd)的通俗解释

 

1. rand(\'seed\',sd)、randn(\'seed\',sd)和rand(\'state\',sd)中各参数的含义

      我们知道,rand和randn都是用来产生伪随机数的,但是产生伪随机数的generator(发生器)有多种,而seed、state、twister等就是用来指定不同类型的伪随机数发生器的,其中seed 指“v4 generator”,state指“v5 generator”,twister指"Mersenne Twister generator"。第二个参数“sd”是“seed”的缩写,表示发生器的种子点,这个值将作为generator的输入,用于产生伪随机数。这里有必要先解释一下随机数和伪随机数的本质区别:随机数是在某次产生过程中,按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,不可重复的;而伪随机数则是按照一定算法模拟产生的,其结果是确定的,可重复的。当然这里的确定和可重复是指给定相同的初始值,算法模拟将产生相同的输出。

2. 为什么要用rand(\'seed\',sd)、randn(\'seed\',sd)和rand(\'state\',sd)

        在实际应用中,比如检查程序问题时,为了重现错误,我们可能希望产生相同的伪随机数,这个时候就需要用这些表达式了。正如前面所说的,如果选用相同的generator并设置相同的初始值sd,那么你就可以得到同样伪随机数。

举个例子:

rand(\'seed\',0); %选定generator并设定初始值

a=rand(3,3);

rand(\'seed\',0);%设定同样的generator和相同的初始值

b=rand(3,3);

a

b

输出:

a =
   0.218959186328090   0.679296405836612   0.519416372067955  
   0.047044616214486   0.934692895940828   0.830965346112366 
   0.678864716868319   0.383502077489859   0.034572110527461 

b =
   0.218959186328090   0.679296405836612   0.519416372067955  
   0.047044616214486   0.934692895940828   0.830965346112366  
   0.678864716868319   0.383502077489859   0.034572110527461   

对比后你会发现a和b相等。

3. 为什么要用rng替换rand(\'seed\',sd)、randn(\'seed\',sd)和rand(\'state\',sd)

        MATLAB官方给出的理由如下:

1)“seed”和“state”等词对于所对应的generator来说是一种误导;

2)除了“twister”以外,其他的generator都有问题;

3)这些表达式对于rand和randn采用了不同的generator,没必要。

所以在新版的MATLAB中已经不推荐这种方法了。

4. 替换的具体方法

下图是MATLAB给的一个替换的方式,最右边的才是它推荐的方法。

 

实际应用中举例如下(这里只以seed为例,其他的类似):

randn(\'seed\',0);%rng(0);

a=randn(4,3);

randn(\'seed\',0);%rng(0);

b=randn(4,3);

a

b

MATLAB推荐用注释掉的语句替换对应行的语句。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi 学习之函数 ②扩展的日期时间操作函数发布时间:2022-07-18
下一篇:
Delphi 希望成为下一个跨平台编程语言发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap