matlab rand randn 每次生成的随机数都一样的解决方案

问题说明

在Matlab应用中,我们经常需要用到随机数,比如rand(),randn()等函数,都是生成某一类随机数的函数。对于rand()函数来说,每一次启动Matlab软件后,生成的随机数都是相同的

解决方案

因此需要设置一个随时变化的随机数种子,来保证其生成的随机数为真随机数。然而,对于某些需要可重复运行的场景来说,需要设定一个固定的随机数种子,以保证每一次运行都能得到相同的随机数,因此,也需要随机数种子。下面以几个小例子进行说明。

例子

如下图1所示,我们每次输入randn(3)的时候都会输出一个不一样的3x3的矩阵。

生成不重复的随机数

       在这里插入图片描述
              图1
但是我们每次重新开始运行代码的时候生成的随机数就都是一样的了。这是因为我们每次重新运行代码的时候都会重置随机种子,当种子数相同的时候,生成的随机数也是一样的。

生成重复的随机数

下面我给大家演示一下什么叫相同的种子数生成相同的随机数
       在这里插入图片描述
                图2

大家看到,每次我们把seed设置为100的时候输出的随机数就都一样了,我们管这种随机数叫伪随机数,它不是真正的随机,因为它可以被重复生成。

结论

所以为什么你每次生成的随机数都一样,因为你每次重新运行程序的时候seed都默认设置为0了,所以你每次都会生成一样的随机数,如果你想生成不一样的随机数,你可以在运行randn前加上这样一行代码
randn('seed',sum(100*clock))
然后再输入
randn(3)这样你就可以每次都得到不一样的随机数了

具体想了解关于seed是什么的同学可以看一下下面这篇文章

参考文献

Matlab产生随机数函数rand和randn的“state”和“seed”参数

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值