rng函数(matlab)生成可重复随机数

0写在前面

只列出我认为实用的用法,其他的用法暂未尝试。为了随机数不随代码多次运行而改变,学习了rng函数如何使用。

rng函数用法

(1)rng(seed,'generator')

 个人理解:计算机本身内置了长串随机数,使用rng中的种子seed每次都将同一区域的随机数取出,保证随机数的可重复性。而生成器(generator)是用于生成随机数的不同算法。

seed为非负整数

用法:

rng(1,'twister');
a=rand(1,5)
rng(1,'twister');
b=rand(1,5)

a =0.4170    0.7203    0.0001    0.3023    0.1468
b =0.4170    0.7203    0.0001    0.3023    0.1468

上述代码结果如下:

(2)rng(seed)

只指定 MATLAB 随机数生成器的种子。那么generator默认为梅森旋转生成器,无需指定。

用法:

rng(1);
A = rand(3,3)
rng(1);
b = rand(3,3)
A =

    0.4170    0.3023    0.1863
    0.7203    0.1468    0.3456
    0.0001    0.0923    0.3968
b =

    0.4170    0.3023    0.1863
    0.7203    0.1468    0.3456
    0.0001    0.0923    0.3968

(3)rng(s)

这个用法目前在我看来用处没前面的好,因为无法使用种子seed,也就不能在统一代码中多次使用

s = rng;%将当前生成器设置保存在s中
a = rand(1,5)
rng(s);
b = rand(1,5)

a =
    0.5388    0.4192    0.6852    0.2045    0.8781
b =
    0.5388    0.4192    0.6852    0.2045    0.8781

当为rng指定种子时,该方法就失效了

s = rng(1);%将当前生成器设置保存在s中
a = rand(1,5)
rng(s);
b = rand(1,5)

a =
    0.4170    0.7203    0.0001    0.3023    0.1468
b =
    0.0274    0.6705    0.4173    0.5587    0.1404

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值