MATLAB如何使用randn函数创建正态分布的随机矩阵
【语法说明】
R=randn(n):生成 n×n 随机数矩阵,元素服从标准正态分布。
R=randn(m,n)或R=randn([m,n]):生成m×n标准正态分布随机矩阵。
R=randn(m,n,p…)或 R=randn([m,n,p,…]) :生成 m×n×p×L标准正态分布的随机多维数组。
R=randn(…,classname):字符串classname指定随机数的数据类型,可取值为double或single,分别表示双精度浮点数和单精度浮点数,默认为double。
randn(‘seed’,sd)或randn(‘state’,sd):在MATLAB旧版本中,用这两条命令设置随机数种子。在MATLAB R2011b 中,用rng 函数代替。randn(‘seed’,sd)相当于 rng(sd,’v4’),rand(‘state’,sd)相当于rng(sd,‘v5normal’)。
【功能介绍】生成标准正态分布的随机矩阵。用法与rand类似,区别在于randn产生的元素服从标准正态分布,rand中则满足均匀分布。
【实例】使用randn函数产生10000个服从参数为(2,5)正态分布的随机数,并计算样本均值和方差。
>> randn('seed',0) % 设置随机数种子为零
>> a = randn(1,10000) * sqrt(5) + 2; % 产生一万个均值为2,方差为5的正态分布随机数
>> mean(a) % 求样本均值
ans =
1.9736
>> std(a) % 样本标准差
ans =
2.2447
>> var(a) % 样本方差
ans =
5.0385
【实例讲解】randn产生的随机数默认服从标准正态分布,要产生非标准的(μ,σ 2 )正态分布随机数,可以使用 randn(m,n)*σ+μ的形式。mean、std、var 函数分别用于求均值、标准差和方差。在本例中,样本均值1.9736和方差5.0385均接近给定的参数。