matlab 中如何产生0-1上均匀分布的随机数

如题所述

在matlab 中产生0-1上均匀分布的随机数方法如下:
方法1、对于问题,如果 Y 是m*n的服从0~1均匀分布的随机矩阵:
Y = rand(m,n);

方法2、用统计工具箱,Y = unifrnd(0,1,m,n).

另外,提供常用的函数分布供参考:
1、 均匀分布U(a,b)
产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n)

2、0-1分布U(0,1)
产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n)

3、二类分布binornd(N,P,mm,nn),即产生mm*nn均值为N*P的矩阵
4、产生m*n阶离散均匀分布的随机数矩阵:
unidrnd(N,mm,nn) 产生一个数值在1-N区间的mm*nn矩阵;
5、产生mm nn阶期望值为 的指数分布的随机数矩阵:exprnd ( ,mm, nn).
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-19
对于理科生而言,matlab是我们经常写程序的工具。在我们写程序的需要一些设置随机初始条件,或者其他一些分布的时候,需要用到均匀分布,那么均匀分布该如何生成?

开启分步阅读模式
操作方法
01
rand(m, n) 这里生成的是m*n阶 均匀矩阵,这里m代表行数,n代表列数。并且m,n均是正整数。

02
实例:如果我们想生成一个3*3的均匀分布的矩阵,只需要如下命令:
rand(3,3) 或者 rand(3)

03
如果需要获得(a,b)的随机数,我们可以利用(0,1)的均匀随机数来生成(a,b)的均匀随机数。
a + (b-a).*rand(m,n) 这里(a,b) 是你生成随机数的端点,m,n代表矩阵的行和列。

04
实例: 生成均匀分布(2,4) 的3*3矩阵,对于这个问题,我们只需要简单的代下公式即可,具体验算流程,这里不再介绍。
2 + 2.*rand(3,3)

05
目前来说对于均匀我们已经基本学会了,但是如何简单的验证,我们生成的均匀的随机变量是否是均匀的?或者怎么简单的验证下生成的随机变量是正确的。我们可以分析生成数据的分布图来验证。

06
我们可以先生成1000个随机变量,然后画出其对应的条形图像,或者其他图像。结果都是类似的。另外一个我们可以简单验证其均值,通过mean函数
第2个回答  2021-04-15
好久没用MATLAB了,今天在利用MATLAB进行数据处理时,突然发现自己忘记了该如何产生自己需要的随机数形式,于是又查了一通资料。现对其进行一个简单的总结,供自己和大家以后参考:

1. randi : 产生均匀分布的伪随机整数
%产生一个1至10之间的随机矩阵,大小为2x5;
s1 = randi(10,2,5);

%产生一个-5至5之间的随机矩阵,大小为1x10;
s2 = randi([-5,5],1,10);

2. rand: 产生均匀分布的伪随机数
%产生一个0至1之间的随机矩阵,大小为1x5;
s3 = rand(1,5);

%产生一个0至1之间的二进制随机矩阵,大小为1x10;
s4 = round(rand(1,10));

%产生一个a至b之间的随机矩阵,大小为1x5;
% a + (b-a) * rand(1,5); 如:a,b = 2,5
s5 = 2 + (5-2) * rand(1,5);

3. linspace:产生线性间隔向量
%创建一个从1到10的100个线性间隔的向量,大小为1x100;
s6 = linspace(1,10);

%创建一个从0到10的6=[(10-0)/2+1]个线性间隔数的向量,大小为1x6;
s7 = linspace(0,10,6);

4. unifrnd:产生连续统一的随机数字
%创建一个大小从0到2之间的随机矩阵,size为1x5;
s8 = unifrnd(0,2,1,5);

%从(0,1)(1,2)(2,3)...中分别产生一个随机数,组成随机矩阵;
%如:从(0,1)(1,2)(2,3)(3,4)(4,5)分别产生一个随机数组成矩阵;
a = 0:4;
b = 1:5;
s9 = unifrnd(a,b);

5. unidrnd:产生离散的统一随机数字
%创建一个大小从1到10之间的随机矩阵,size为2x5;
s10 = unidrnd(10,2,5);

%产生一个10以内的随机数;
s11 = unidrnd(10);
s12 = unidrnd(10);
s13 = unidrnd(10);

基本常用的都罗列出来了,另外还有一些其他随机数,方法其本类似,这里就不在一一列举好久没用MATLAB了,今天在利用MATLAB进行数据处理时,突然发现自己忘记了该如何产生自己需要的随机数形式,于是又查了一通资料。现对其进行一个简单的总结,供自己和大家以后参考:

1. randi : 产生均匀分布的伪随机整数
%产生一个1至10之间的随机矩阵,大小为2x5;
s1 = randi(10,2,5);

%产生一个-5至5之间的随机矩阵,大小为1x10;
s2 = randi([-5,5],1,10);

2. rand: 产生均匀分布的伪随机数
%产生一个0至1之间的随机矩阵,大小为1x5;
s3 = rand(1,5);

%产生一个0至1之间的二进制随机矩阵,大小为1x10;
s4 = round(rand(1,10));

%产生一个a至b之间的随机矩阵,大小为1x5;
% a + (b-a) * rand(1,5); 如:a,b = 2,5
s5 = 2 + (5-2) * rand(1,5);

3. linspace:产生线性间隔向量
%创建一个从1到10的100个线性间隔的向量,大小为1x100;
s6 = linspace(1,10);

%创建一个从0到10的6=[(10-0)/2+1]个线性间隔数的向量,大小为1x6;
s7 = linspace(0,10,6);

4. unifrnd:产生连续统一的随机数字
%创建一个大小从0到2之间的随机矩阵,size为1x5;
s8 = unifrnd(0,2,1,5);

%从(0,1)(1,2)(2,3)...中分别产生一个随机数,组成随机矩阵;
%如:从(0,1)(1,2)(2,3)(3,4)(4,5)分别产生一个随机数组成矩阵;
a = 0:4;
b = 1:5;
s9 = unifrnd(a,b);

5. unidrnd:产生离散的统一随机数字
%创建一个大小从1到10之间的随机矩阵,size为2x5;
s10 = unidrnd(10,2,5);

%产生一个10以内的随机数;
s11 = unidrnd(10);
s12 = unidrnd(10);
s13 = unidrnd(10);

基本常用的都罗列出来了,另外还有一些其他随机数,方法其本类似,这里就不在一一列举
第3个回答  2014-10-15
rand函数
A=rand(M,N)
该函数产生一个大小M*N的数组,数组的元素为在区间(0,1)内均匀分布的数
第4个回答  推荐于2017-09-08
对于你的问题,如果 Y 是m*n的服从0~1均匀分布的随机矩阵:

Y = rand(m,n)

用统计工具箱,

Y = unifrnd(0,1,m,n)本回答被提问者采纳