概述
matlab的随机数生成函数
rand 生成均匀分布的伪随机数,分布在0~1之间
randn 生成标准正态分布的伪随机数,均值为0,方差为1
- rand(m,n)生成m行n列的均匀分布的伪随机数
- rand(RandStream,m,n)利用指定的RandStream(可认为是随机种子)控制伪随机数
randi 生成均匀分布的伪随机整数
- randi([iMin,iMax],m,n)在(iMin,iMax)生成mxn随机矩阵
伪随机数的重复生成,关于随机种子
matlab的rand虽然生成的是伪随机数,但每次生成结果也是不同的,
想要做重复性实验,matlab文档的Managing the Default Stream(管理默认流)章节讲到,
rand, randn, and randi draw random numbers from anunderlying random number stream, called the default stream. The @RandStream class allows you to get a handle to the default streamand control random number generation.
也就是说,rand,randn和randi从一个基础的随机数流中得到随机数,称作默认流。
①通过RandStream类得到默认流的句柄从而控制随机数的生成。
% 得到默认流句柄
defaultStream = RandStream.getDefaultStream;
% state属性是发生器的内部状态,用来保存默认流状态
myState = defaultStream.State;
% 利用myState恢复默认流状态重复前面的结果
A = rand(1,100);
defaultStream.State = myState;
B = rand(1,100);
% B==A
②直接使用RandStream类的reset静态方法重置种子状态来获取相同的随机数
% 获取默认的随机种子
stream = RandStream.getDefaultStream;
reset(stream); % 重置
A = rand(stream,1,3);
reset(stream); % 重置
B = rand(stream,1,3);
% B==A
最后
以上就是无私人生为你收集整理的matlab的RandStream和伪随机数的重复生成的全部内容,希望文章能够帮你解决matlab的RandStream和伪随机数的重复生成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复