我是靠谱客的博主 无私人生,这篇文章主要介绍matlab的RandStream和伪随机数的重复生成,现在分享给大家,希望可以做个参考。

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类得到默认流的句柄从而控制随机数的生成。

复制代码
1
2
3
4
5
6
7
8
9
% 得到默认流句柄 defaultStream = RandStream.getDefaultStream; % state属性是发生器的内部状态,用来保存默认流状态 myState = defaultStream.State; % 利用myState恢复默认流状态重复前面的结果 A = rand(1,100); defaultStream.State = myState; B = rand(1,100); % B==A

②直接使用RandStream类的reset静态方法重置种子状态来获取相同的随机数

复制代码
1
2
3
4
5
6
7
% 获取默认的随机种子 stream = RandStream.getDefaultStream; reset(stream); % 重置 A = rand(stream,1,3); reset(stream); % 重置 B = rand(stream,1,3); % B==A

最后

以上就是无私人生最近收集整理的关于matlab的RandStream和伪随机数的重复生成的全部内容,更多相关matlab内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部