如何用matlab生成随机数函数

如题所述

使用matlab里面的rand函数可以生成随机数函数。

rand函数的用法 :

(1)命令:rand(N),rand(M,N)等 

(2)对于rand(N),通过help rand得到的解释是:

R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1). 

(3)即rand(N)是生成一个符合标准均匀分布的矩阵,其值位于开区间0~1。 

(4)由概率论知识可知,当一个序列服从(0,1)区间的标准均匀分布时,其期望为0.5,方差为1/12(0.08333)。 

可以用程序检验一下:

扩展资料:

matlab函数randn:产生均值为0,方差 σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。

用法:Y = randn(n),返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。 

Y = randn(m,n) 或 Y = randn([m n]),返回一个m*n的随机项矩阵。

Y = randn(m,n,p,...) 或 Y = randn([m n p...]),产生随机数组(感觉就是三维数组,请看如下例子)。

1: >> rand(1,2,3)

2: ans(:,:,1) =

3:    0.445586200710899   0.646313010111265

4: ans(:,:,2) =

5:    0.709364830858073   0.754686681982361

6: ans(:,:,3) =

7:    0.276025076998578   0.679702676853675

Y = randn(size(A)),返回一个和A有同样维数大小的随机数组。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-25

步骤如下:

一、第一步打开matlab命令行窗口,输入help rand,按回车键,可以看到关于rand()函数的用法介绍,生成随机数的函数,如下图所示:

二、第二步我们输入round(rand(1,5)*10),按回车键就生成了5个0-10的随机整数,如下图所示:

三、第三步输入round(rand(1,5)*3),按回车键就生成了5个0-3的随机整数,如果不想生成整数,可以去掉round函数,需要注意的是使用rand函数生成随机数会有重复数,如下图所示:

扩展资料:

随机数是专门的随机试验的结果。

在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。

产生随机数有多种不同的方法。这些方法被称为随机数生成器。随机数最重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。

参考资料:百度百科 随机数



本回答被网友采纳
第2个回答  推荐于2019-10-10

1.rand函数的用法 :

(1)命令:rand(N),rand(M,N)等 

(2)对于rand(N),通过help rand得到的解释是:

R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1). 

(3)即rand(N)是生成一个符合标准均匀分布的矩阵,其值位于开区间0~1。 

(4)由概率论知识可知,当一个序列服从(0,1)区间的标准均匀分布时,其期望为0.5,方差为1/12(0.08333)。 

可以用程序检验一下:

2.randi函数的用法 :

(1)命令:randi(IMAX,N),randi(IMAX,M,N),randi(IMAX,[M,N]),randi([IMIN,IMAX],…)等 

(2)对于randi(N),通过help randi得到的解释是: 

R = randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX. 

R = randi([IMIN,IMAX],…) returns an array containing integer values drawn from the discrete uniform distribution on IMIN:IMAX 

(3)即randi生成1:IMAX或者IMIN:IMAX之间的离散均匀分布的整数矩阵。如:

3.randn函数的用法 :

(1)命令:randn(N),randn(M,N)等 

(2)对于randn(N),通过help randn得到的解释是:

R = randn(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard normal distribution. 

(3)即randn(N)是生成一个符合标准正态分布的矩阵,其值位于开区间0~1

4.随机数据生成控制语句 :

(1)在早期的MATLAB版本中,用’seed’,’state’,’twister’等命令控制随机数据的生成,但是这些命令将在未来的版本中被移除。

(2)现在用rng语句来代替这些命令,以控制随机数据的生成。见MATLAB中的updating your random number generator syntax 

(3)rng的使用: 

当使用rand,randi,randn语句时,其默认的是每次生成的数据不同(使用不同的随机数生成种子)

本回答被网友采纳
第3个回答  推荐于2019-11-06
1。MATLAB函数Rand
以间隔(0, 1)生成的均匀随机数均匀分布在(0,1)之间。一个被称为种子的值用来控制生成的随机数。一致随机数函数的语法是RAND(n),伦德(m,n),其结果是包含n*n随机数的矩阵和含有m*n随机数的矩阵。注意,每个随机数的值是不一样的。这些值代表随机和意外,这就是为什么我们使用随机数。我们可以使用这些随机数来表示某一信号的幅值或事件的概率。从其概率密度函数(PDF)可以解释均匀分布在一个区间内的均匀随机数的分布。从它的PDF分布,类似于长图的分布,我们可以看到每个随机数具有相同的概率,因此称为均匀随机数。
请参阅下列示例:
> RAND(1,6)%首次使用随机数发生器
ANS=
0.2190 0.0470 0.6789 0.6789 0.6793 0.9347 0.3835
> HIST(ANS)%:查看条形图的长度。
>情节与ANS有什么区别?什么可以表示不规则数据的分布
兰德(1,6)%使用随机数发生器。注意,每次生成的随机值是不同的。
ANS=
0.5194 0.8310 0.0346 0.0346 0.0535 0.5297 0.6711
由于每个随机数产生的值是不同的,如果使用的随机数是相同的,因为需要确定验证公式,种子选项可以用来设置计算随机数生成器的起始值,其语法为RAND(‘种子’,N’),N是SP。神化的n=0的特殊意义是第一次使用初值(=931316785)来生成随机值,另一个n值是使用的初始值。如果使用相同的起始值,则随机值将是相同的,因为随机数的计算是基于起始值的。请参阅下列示例:
RAND(‘种子’,0)%重置随机值的初始值,这是第一次产生随机值。
> RAND(‘种子’)%表示现在使用的种子值=931316785。
ANS=
九亿三千一百三十一万六千七百八十五
“兰德(2,3)%)。注意随机数的上下界在[0,1]区间内。
ANS=
0.2190 0.6789 0.6789
0.0470 0.6793 0.6793
RAND(“种子”)%表示种子= 412659990用于再次生成随机值。
ANS=
四亿一千二百六十五万九千九百九十
>兰德(种子),0)
> RAND(1,6)
ANS=
0.2190 0.0470 0.6789 0.6789 0.6793 0.9347 0.3835
RAND(‘种子’,100)%设置随机值=100的起始值
>兰德(种子)
ANS=
一百
> RAND(2,5)
ANS=
0.2909 0.0395 0.3671 0.3671 0.5968 0.9253
0.0484 0.5046 0.9235 0.9235 0.8085 0.3628
如果随机数不是[0,1]区间,则可以应用以下步骤将随机数从[0,1]区间变换到其他区间。如果你想在[2,4]区间中得到一组随机数,我们首先在[0,1]区间中生成一组随机数,然后乘以2,因为2等于区间的上下界(4-2)之间的差值。随着下限(2)的增加,可以从[2,4]区间获得随机值。例如,区间是[a,b],a是下限,b是上限。公式如下
X=(B-A)*R+A,
X表示转换后的随机数的数组。请看下面的演示:
> DATAY1=2×RAND(1500)+2;%;原始随机值为500。
>图(DATAY1)%的图形看起来熟悉吗?
>轴(〔1 5000 6〕)水平轴/纵轴线上下界的平差
> HIST(DATAY1)%查看其条带图
2。MATLAB函数
生成一个正态随机数。它是基于随机数中高斯分布的上下界。一个区间内正态随机数的分布可用其统计密度函数(PDF)来解释。从它的PDF分布可以看出,每个随机数的概率是不同的。靠近中间的随机数的概率高于两端的值。这是一般不规则现象的一个更可能的情况,因此它被称为正态随机数。由于正态随机数不被定义为下限,它由数据的均值和方差来定义。因此,当生成一个正态随机数时,应该设置平均值和方差。Randn(n)和RANN(n,m)是生成n×n随机数的矩阵和包含m *n的矩阵的正态随机数,平均方差为0。
请参阅下列示例:
“x= -2.9:0.22.9”;%;该示例使用HIST函数绘制分布M。本回答被网友采纳
第4个回答  推荐于2017-10-02
1. MATLAB 函数 rand
产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间。一个称为seed的值则是用来控制产生随机数的次数。均匀随机数函数的语法为rand(n),rand(m,n),其结果分别产生一矩阵含n×n个随机数和一矩阵含m×n的随机数。注意每次产生随机数的值都不会一样,这些值代表的是随机且不可预期的,这正是我们用随机数的目的。我们可利用这些随机数代入算式中,来表示某段讯号的不规则振幅或是某个事件出现的机率。均匀随机数其值平均的分布于一区间的特性可以从其统计密度函数(probabilitydensity function, PDF)说明。从其PDF分布类似长条图的分布,可以看出其每一个随机数值出现的机率皆相同,所以它被称为均匀随机数。
见以下的例子:
>> rand(1,6) % 第一次使用随机数产生器
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>>hist(ans) % 看看长条图的长相
>>plot(ans) % 比较上个图与这个图有何差异?何者能代表不规则数据的分布
>> rand(1,6) % 第二次使用随机数产生器,注意每次产生的随机数值皆不同
ans =
0.5194 0.8310 0.0346 0.0535 0.5297 0.6711
因为每次随机数产生的值皆不同,如果因为验证算式需要确定所使用的随机数值是相同的,可以利用seed这个选项,用以设定使用计算随机数产生器的起始值,其语法为rand('seed',n),n的规定是。其中n=0有特别意义是使用第一次产生随机数值的起始值(=931316785),其它的n值即是所使用起始值。如果使用相同的起始值,则随机数值会一样,因为随机数的计算是依据起始值。请看以下的例子:
>> rand('seed',0) % 将随机数值的起始值重设,相当于是第一次产生随机数值
>>rand('seed') % 显示现在使用的 seed 值=931316785
ans =
931316785
>> rand(2,3) % 注意随机数值的上下限介于 [0,1] 区间
ans =
0.2190 0.6789 0.9347
0.0470 0.6793 0.3835
>> rand('seed') % 显示再产生随机数值所用的seed=412659990
ans =
412659990
>> rand('seed',0)
>> rand(1,6)
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>> rand('seed',100) % 设定随机数值的起始值=100
>> rand('seed')
ans =
100
>> rand(2,5)
ans =
0.2909 0.0395 0.3671 0.5968 0.9253
0.0484 0.5046 0.9235 0.8085 0.3628
如果需要产生随机数值不是介于[0,1]区间,可以采用以下步骤将随机数值从[0,1]区间转换到其它区间。假设要得到一组随机数值是介于[2,4]区间,我们先产生一组随机数介于[0,1]区间 ,再将其值乘以2,因为2等于区间上下限的差值(4-2)。接著再加上下限值(2),即可得到随机数值是介于[2,4]区间。例如区间为[a,b],a为下限值,b为上限值。则算式如下
x=(b-a)*r + a,
其中x代表转换后的随机数值的阵列。请看下列示范:
>>data_1 = 2*rand(1,500)+2; %原随机数值有500个
>>plot(data_1) %这个图是否看来眼熟?
>>axis([1 500 0 6]) %调整横轴/纵轴上下限
>>hist(data_1) %看看其长条图

2. MATLAB 函数randn
产生常态随机数,它是以高斯分布在随机数出现的上下限区间。常态随机数其值分布于一区间的特性可以从其统计密度函数(PDF)说明。从其 PDF分布可以看出其每一个随机数值出现的机率皆不相同,靠近中间的随机数值出现的机率比起两端的值要高,这是一般不规则现象较可能出现的情形,所以它被称为常态随机数。由于常态随机数并非以上下限来定义,它是用数据的平均值和方差定义之。因此在产生一常态随机数时,需设定平均值和方差的大小。randn(n)和randn(n,m)是分别产生一矩阵含n×n个随机数和一矩阵含m×n的常态随机数,其平均值为0方差为1。
见以下的例子:
>> x=-2.9:0.2:2.9; % 这个例子用到 hist 函数来画出二种随机数的分布图
>> y=randn(1,5000);
>> hist(y,x)
>> title('Histogram of Normal Random Data')
>> y1=rand(1,5000);
>> hist(y1,x)
>> title('Histogram of Uniform Random Data')
如果需要产生常态随机数值的平均值和方差并非0和1,可以采用以下步骤将平均值和方差做转换。假设要得到一组常态随机数值的平均值为b和方差为a,我们先产生一组随机数r,再将其值乘以方差a。接著再加平均值b。算式如下:
x=a*r + b
其中x代表转换后的随机数值的阵列。请看下列示范:
>>data_2 = randn(1,500)+3 %原随机数值有500个
>>plot(data_2) %这个图是否看来眼熟?
>>axis([1 500 0 6])
>>hist(data_2) %看看其长条图
3.randperm(n)
产生一个1到n之间自然数的随机排列
4.randint(m,n,[1 N])
生成m×n的在1到N之间的随机整数矩阵,其效果与randint(m,n,N+1)相同。
相似回答