matlab怎么产生随机数据,有谁知道

作者&投稿:文良 (若有异议请与网页底部的电邮联系)
如何用matlab产生一0、1随机数列~

1、首先启动matlab,新建一个函数文件。

2、在弹出的编辑窗口中输入代码。

3、保存该函数,注意文件命名要与函数名相同。

4、文件保存的位置应该与搜索路径相同,否则使用该函数时将会因为找不到该函数文件而出错。

5、最后再命令行窗口中输入命令,get01(m,n)就可以产生m行n列的随机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. 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)相同。




rand,产生0到1的随机数


如何在matlab中生成负指数分布和均匀分布的随机数
在matlab中用来产生指数分布随机数的函数是exprnd();语法:1.r=exprnd(mu)生成服从参数为mu的指数分布随机数。2.r=exprnd(mu,m)生成服从参数为mu的指数分布的随机数矩阵,矩阵的形式由m定义。例如,n=exprnd(5,[1 6])3.r=exprnd(mu,m,n)生成m×n形式的指数分布的随机数矩阵。当产生的...

怎么用matlab产生-1到1间随机分布的n阶矩阵
Matlab中的A=rand(n)可以生成在[-1,1]上均匀分布的n阶随机矩阵A,产生在区间[a,b]上均匀分布的随机矩阵,可以通过如下操作实现:A = a + (b-a).*rand(n);对于此例即为:A=-1+2.*rand(n);

怎么在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,...

matlab中如何产生非伪随机数,即真正的随机数怎么生成,求高手指点_百度...
通过软件方法产生的随机数都成为伪随机数,因为它们都不是真正的随机数。所谓伪随机数,就是找到一组数目巨大的数,这组数的出现符合一定的概率分布,并且这组数能通过相应的随机性测试,这样我们就能使用这组数来凑合“顶替”真正的随机数来应用了。matlab默认使用的随机数生成算法Mersenne twister是目前...

怎样用matlab产生泊松分布随机数
random('Poisson',Lambda)random('Poisson',Lambda,m,n)泊松分布的参数为Lambda,如果只产生一个随机数就是第一句的样子 第二行的语句表示会产生m×n个随机数,且这些随机数组成了m行n列的矩阵 matlab的help中给出的例子:random('poisson',1:6,1,6)表示产生lambda分别为1,2,3.。。6的六个...

MATLAB问题求助!请问在MATLAB中如何产生0.001到0.01之间的随机数?谢谢...
为了产生随机数,如果是均匀分布,可以用函数 rand(); 如果只要产生单个数,可以用rand(1);对于一个区间 [a, b], 可以产生随机数后再做偏移,比如 r = a + (b-a) .* rand(1);针对你的情况: r= 0.001 + (0.1 - 0.001) .* rand(1);实际上,对于均匀分布,函数random() 可以...

怎样用Matlab产生服从均匀分布的一组随机数
用Matlab的rand()和unidrnd()产生服从均匀分布的一组随机数 rand(m,n)产生m行n列的【0,1】均匀分布随机数 unidrnd(N,m,n)产生m行n列的数值小于N的【0,N】均匀分布随机数

matlab产生随机数
matlab用命令rand可以产生0-1的随机数,用线性变换即可,y=ax+b x=0,y=15 x=1,y=30 a=15,b=15,如果你要的是整数,取整,用round,>> rand(1,50)ans = Columns 1 through 11 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649 0.1576 0.9706 ...

matlab中如何产生一数值,介于20和30之间
unifrnd(20,30,1000,1)意思是:产生一个1000*1 的array,这个array中的每个元素为20 到30之间连续均匀分布的随机数 e.g.:a = unifrnd(20,30,5,1)产生(一种可能,因为是随机数)如下结果:a = 29.5013 22.3114 26.0684 24.8598 28.9130 类似的,结果是5*1的array,array中的值为20到...

求助标准极值分布随机数怎么用matlab产生
第一种方法:直接调用random函数,如下:datan1=random('norm',3.5,sqrt(5.8))datag1=random('gam',0.3,4.0)datap1=random('poiss',4.2)random函数的第一个字符串参数表明了分布类型,后面的参数依次是该分布按习惯顺序的对应参数,例如正态分布就是μ(均值)和σ(标准差),伽马分布就是...

会理县15157558068: matlab怎么产生随机数据?matlab怎么产生随机数据,有谁
浑削小儿: 百度一下有好多种方法~~这里参考一下http://wenku.baidu.com/view/8454c845b307e87101f69673.html

会理县15157558068: matlab 中怎样按概率产生随机数 -
浑削小儿: 1. 首先,MATLAB自带很多生成满足一定分布的随机数的函数,例如: rnd:服从0~1的均匀分布U(0,1). randn:服从标准正态分布N(0,1). exprnd(MU):服从参数为MU的指数分布. 等等,这些都是最基本的. 2. 如果要生成除上面这些之外的随机数,需要严密的数学推导,利用这些分布进行构造,例如a+b*randn就是服从N(a,b),这些都可以在概率论的书上找到他们之间的联系.如果推导不出,还可以利用大数定律进行生成,通过一组随机数确定一个随机数的方式.

会理县15157558068: matlab 中怎样产生一个1到100的随机整数 -
浑削小儿: 可以用randperm( )随机整数函数,比如: 1、randperm(100,1) %产生一个100以内的随机整数 2、randperm(100,3) %产生三个100以内的随机整数MATLAB[1] 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据...

会理县15157558068: matlab中如何生成一个随机信号 -
浑削小儿: 原发布者:李世民的111Matlab中随机信号的产生在matlab编程中,我们所能用到的用于产生随机信号的函数有三:Rand,randn,randi下面我们详细的了解一下这三个函数.1.Rand功能是生产均匀分布的伪随机数,并且所生成的伪随机数分布在...

会理县15157558068: MATLAB中如何用自定义的函数生成随机数 -
浑削小儿: 自己写一个随机数产生器,保存为m文件调用就可以了. 直接用Matlab的rand系列的函数更好,O(∩_∩)O~.

会理县15157558068: matlab中怎么对应产生随机数 -
浑削小儿: 直接rand(M,N)产生0~1之间的M行N列随机数 randi([a,b],M,N)产生整数a~b的M行N列的随机数1 2 3 4 5>> randi([4,8],1,2)ans = 48

会理县15157558068: 如何让matlab生成一个随机数 -
浑削小儿: 生成元素为0-1之间的n维方阵,以n=5为例,在matlab主窗口中输入 A=rand(5),回车,出现如下结果:生成的是一个5*5的方阵,矩阵的元素是0-1之间的随机数.生成元素为0-8之间的N维方阵,以N=5为例,在MATLAB主窗口中输入 B=round(8*...

会理县15157558068: 如何用Matlab产生1到10之间3个不同的随机数 -
浑削小儿: <% Function RndNumber(MinNum,MaxNum) Randomize RndNumber=int((MaxNum-MinNum+1)*rnd+MinNum) RndNumber=RndNumber End Function Function RndN(N,a,b) '产生一个长度为N的不重复的随机字符串,a为最小值,b为最大值 x = ...

会理县15157558068: Matlab如何产生满足一定条件的随机数 -
浑削小儿: 你可以先构造特征值,使得最大特征值除以最小特征值为1000,再随机的生成正交矩阵作为特征向量矩阵,从而重构出所要的矩阵.如下所示,构造了个3*3的矩阵,其条件数为1000: >> V = diag([1000 20 1]); % 只要最大除最小等于1000即可 >> U = orth(randn(3, 3)); >> A = U*V*U^-1; >> cond(A) ans =1000.0000 下次问编程类问题选择问题分类为编程吧,这样可以贴代码.

会理县15157558068: 用matlab产生随机数 -
浑削小儿: 这样就可以.>> sort(randperm(10)) ans = 1 2 3 4 5 6 7 8 9 10>> sort(randperm(fix(rand(1)*10))) ans = 1 2 3 4 5 6 fix取整时,把1.1和1.2都当成1,只剩一个数了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网