当前位置:   article > 正文

【数模】数据统计与分析中的随机数_随机数字分析

随机数字分析

matlab里关于随机数的用法

一、简单随机数

随机数的产生指令:rand或者rand()
在MATLAB软件中输入 help rand再回车生成以下内容可以查看随机数的用法:
在这里插入图片描述
关于生成的随机数有如下一些基础的指令:

rng()           %重置随机数的指令,随机数种子,也叫固定随机数生成器
rand()           %生成(0,1)之间的随机数
2*rand()         %生成(0,2)之间的随机数
n*rand()         %生成(0,n)之间的随机数
randn            %生成正态分布的随机数,平均数为0,方差为1
rand(n)          %生成一个n维随机数方阵
rand(a,b)        %生成一个a行b列的随机数矩阵
randi([min,max]) %i即为integer整数.生成(min,max)之间的随机整数
randi([min,max],a,b) %i即为integer整数。生成(min,max)之间的a行b列的随机整数矩阵
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.rand()–生成(0,1)区间上均匀分布的随机变量。

基本语法:rand([M,N,P ...])
生成排列成 MNP… 多维向量的随机数。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号
如下:

>> rand(5,1) %生成51列

ans =

    0.9649
    0.1576
    0.9706
    0.9572
    0.4854

>> rand(2) %生成一个2*2的矩阵

ans =

    0.8003    0.4218
    0.1419    0.9157

>> rand([1,2,3])%3维的

ans(:,:,1) =

    0.7922    0.9595


ans(:,:,2) =

    0.6557    0.0357


ans(:,:,3) =

    0.8491    0.9340

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=rand(100000,1);
 
hist(x,30);
  • 1
  • 2
  • 3

结果如下:
在这里插入图片描述

2、randn()–生成服从标准正态分布(均值为 0,方差为 1)的随机数

基本语法:randn([M,N,P ...])

生成排列成 MNP… 多维向量的随机数。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号

>> randn(3,1)%生成31列的随机数

ans =

   -0.0633
   -0.0131
    0.8484

>> randn(3)

ans =

   -0.2056    1.6798    0.4645
   -0.3188    0.2375    1.1904
   -0.3777   -0.4135    1.4247

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

通过下面代码,可以生成大量随机数,查看大致的分布情况

x=randn(60000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

二、较复杂随机数(需安装了统计工具箱(Statistic Toolbox))

1. unifrnd()——生成[a,b]区间内连续均匀分布的随机数

基本语法:unifrnd(a,b,[M,N,P,...])
生成的随机数区间在 (a,b) 内,排列成 MNP… 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。

>> unifrnd(2,3,5,1)%生成51列,随机数在[2,3]之间

ans =

    2.6602
    2.7665
    2.8663
    2.7184
    2.8244

>> unifrnd(1,3,5,4)%或者是unifrnd(1,3,[5,4]) 生成一个54列的随机数矩阵

ans =

    1.0954    1.2533    1.1738    2.5514
    2.4042    2.0975    2.3595    1.2891
    2.5542    2.5774    2.4044    2.8292
    2.6398    2.3141    2.1240    1.1849
    2.9587    1.0418    1.7208    2.9782

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=unifrnd(-2,3,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

2、normrnd()——此函数生成指定均值、标准差的正态分布的随机数。

基本语法:normrnd(mu,sigma,[M,N,P,...])
生成的随机数服从均值为 mu,标准差为 sigma(注意标准差是正数)正态分布,这些随机数排列成 MNP… 多维向量。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号*

>> normrnd(2,4,5,1)

ans =

    1.3280
    9.6100
    5.1128
    0.5671
    8.8950

>> normrnd(2,4,3,4)

ans =

    3.1330    1.0829    0.9843    7.6465
   -2.1762   -1.6577    1.5017   -2.4088
   10.3349    2.6645    3.6504    5.7073

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

%注:上述语句生成的随机数所服从的正态分布都是均值为 2,标准差为 4.
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=normrnd(2,3,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

3、chi2rnd()——此函数生成服从卡方(Chi-square) 分布的随机数。卡方分布只有一个参数:自由度 v

基本语法:chi2rnd(v,[M,N,P,...])
生成的随机数服从自由度为 v 的卡方分布,这些随机数排列成 MNP… 多维向量。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号。

>> chi2rnd(5,5,1)%生成51列的随机数

ans =

    8.2911
    9.5608
    1.9691
    3.2672
    1.9582
>> chi2rnd(5,[3,4])%生成34列的随机数矩阵

ans =

    1.1740    3.6628    2.1500    3.0729
    4.9836    1.2495    5.9958    2.1831
    1.0387    7.1947    3.9908    8.0045
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

注:上述语句生成的随机数所服从的卡方分布的自由度都是5
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=chi2rnd(5,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

4、frnd()——此函数生成服从 F 分布的随机数。F分布有2个参数:v1, v2。

基本语法:frnd(v1,v2,[M,N,P,...])
生成的随机数服从参数为 (v1,v2) 的卡方分布,这些随机数排列成 MNP… 多维向量。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号。*
此处关于matlab的用法就不再阐述了
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=frnd(3,5,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

5、trnd()——此函数生成服从 t 分布 的随机数。t 分布有 1 个参数:自由度 v

基本语法:trnd(v,[M,N,P,...])
生成的随机数服从参数为 v 的t分布,这些随机数排列成 MNP… 多维向量。如果只写 M,则生成 MM 矩阵;如果参数为 [M,N] 可以省略掉方括号*
关于此函数的matlab用法这里不再阐述
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=trnd(7,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述
可以发现t分布比标准正太分布要 “瘦”,不过随着自由度 v 的增大,t 分布会逐渐变胖,当自由度为正无穷时,它就变成标准正态分布了。

三、更复杂的随机数

1、betarnd()——此函数生成服从 Beta 分布的随机数。Beta 分布有两个参数分别是 A 和 B。

语法规则:betarnd(A,B,[M,N,P,...])

通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=betarnd(3,5,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

2、exprnd()——此函数生成服从指数分布的随机数。指数分布只有一个参数: mu

语法规则:exprnd(mu,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=exprnd(0.5,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

3、gamrnd()——生成服从 Gamma 分布的随机数。Gamma 分布有两个参数:A 和 B

语法规则:gamrnd(A,B,[M,N,P,...])
过下面代码,可以生成大量随机数,查看大致的分布情况:

x=gamrnd(3,5,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

4、raylrnd()——生成服从瑞利(Rayleigh)分布的随机数。其分布有 1 个参数:B。

语法规则:raylrnd(B,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=raylrnd(2,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

5、poissrnd()——此函数生成服从泊松 (Poisson) 分布的随机数。泊松分布的参数只有一个:lambda。此参数要大于零

基本语法:geornd(p,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:

x=poissrnd(2,100000,1);
 
hist(x,50);
  • 1
  • 2
  • 3

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/83912
推荐阅读
相关标签
  

闽ICP备14008679号