在MATLAB中,rand()
和 randn()
函数都用于生成随机数,但它们生成的随机数服从不同的分布。
-
rand()
函数:生成的随机数服从均匀分布在区间 (0, 1)上。也就是说,生成的随机数取值范围在 0 到 1 之间,且每个值出现的概率是相等的。rand()函数的调用格式;
# Y = rand(n),返回一个在(0,1)区间均匀分布的n*n的随机矩阵Y
# Y = rand(m,n)或Y = rand([m,n]),返回一个在(0,1)区间均匀分布的m*n的随机矩阵Y
# Y = rand(size(A)),返回一个在(0,1)区间均匀分布的与矩阵A同维数的随机矩阵Y
例题一、利用rand()函数生成一个3x4在(0,1)区间均匀分布的矩阵YY = rand(3,4)
输出结果
例题二,在(-5,5)区间均匀分布的矩阵YY = 5-10*rand(3,4)
-
输出结果
-
randn()
函数:生成的随机数服从标准正态分布,即均值为 0,方差为 1 的正态分布(高斯分布)。这意味着生成的随机数集中在均值附近,并且以指数衰减的方式分布在两侧。
总的来说,rand()
生成的随机数更均匀地分布在 [0, 1] 区间内,而 randn()
生成的随机数则更偏向于集中在均值附近,呈现出正态分布的特征。