matlab随机数函数小结

1,rand 生成均匀分布的伪随机数。分布在(0~1)之间
   主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数
             rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single'
             rand(RandStream,m,n)利用指定的RandStream生成伪随机数
            
2,randn 生成标准正态分布的伪随机数(均值为0,方差为1
   主要语法:和上面一样
  
3, randi 生成均匀分布的伪随机整数
   主要语法:randi(iMax)在开区间[1,iMax]上生成均匀分布的伪随机整数
             randi(iMax,m,n)在开区间[1,iMax]生成mXn型随机矩阵
             r = randi([iMin,iMax],m,n)在开区间[iMin,iMax]生成mXn型随机矩阵
            
    以上3个函数都是根据标准伪随机数发生器的内部状态产生的,所以如果把发生器设置为初始状态,会得到相同的随机数,但如果改变了状态,得到的结果就是不同的;而在matlab打开时,发生器复位到初始状态,所以用上面3个函数得到的结果将是一样的
如我的matlab在打开时输入以下命令将得到相同的随机数:
>> randn(3)

ans =

   0.537667139546100   0.862173320368121  -0.433592022305684
   1.833885014595087   0.318765239858981   0.342624466538650
  -2.258846861003648  -1.307688296305273   3.578396939725761

>> randn(3)

ans =

   2.769437029884877   0.725404224946106  -0.204966058299775
  -1.349886940156521  -0.063054873189656  -0.124144348216312
   3.034923466331855   0.714742903826096   1.489697607785465

>> randn(3)

ans =

   1.409034489800479  -1.207486922685038   0.488893770311789
   1.417192413429614   0.717238651328838   1.034693009917860
   0.671497133608081   1.630235289164729   0.726885133383238
  
   如果想将发生器复位到一个固定状态,可以使用如下命令
  randn('seed',0);
   randn(3)
   以上两条命令将总是得到一样的随机数。
   上述命令已经在7.7以后摒弃了(但仍可继续用),7.7以后可以使用randstream函数,如下
   reset(RandStream.getDefaultStream)
  
   一般情况下,随机数都是从默认随机数流中得到数据的,而可以创建自己的数据流对象,并可以从自己的数据流对象中得到随机数,详见randstream函数。
   
    如果希望matlab在不同程序段产生不同的随机数据,可以将默认数据流设置为基于时钟的,方法为
    RandStream.setDefaultStream ...
     (RandStream('mt19937ar','seed',sum(100*clock)));

normrnd是自己可以指定均数和标准差的正态分布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值