对于伪随机数的理解

以Matlab语法中的rand(‘state’, sum(clock))为例,在其它编程语言里也是类似的

计算机系统中的随机数都是伪随机数,是通过一个算法连续产生的,知道上一个随机数,下一个随机数就是确定的,已知从给定的某个数开始,后面连续的随机数序列都已经确定

我们使用的随机数就好像从这个序列中(称为随机数流)中取数字来使用

为了增加随机数的随机程度和可控性,用rand(‘state’, X)来设置随机数流的状态,就像C语言中随机数的seed,一旦给一个X值,那么后面的随机数流就确定

Matlab语法中的rand(‘state’, sum(clock))用当前时间数码sum(clock)作为随机数的状态,clock的返回值是具有6个元素的向量,用于分辨年月日时分秒,sum加起来就作为随机数的状态,因为你每次运行程序的时间不同,所以得到的随机数序列就不同

单独使用这句代码会改变随机数流的状态,但是未使用前不产生任何变量

如果计算机运行速度太快的话,仍然会生成相同随机数,可以考虑使用rand(‘state’, sum(clock)*rand(1))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值