randn
正态分布随机数
语法
描述
X = randn
返回从标准正态分布中抽取的随机标量。
X = randn(
从随机数流生成数字年代
,___)年代
而不是默认的全局流。要创建流,使用RandStream
.你可以指定年代
后面跟着以前语法中的任何输入参数组合。
例子
随机数矩阵
生成正态分布随机数的5 × 5矩阵。
R = randn(5)
r =5×50.5377 -1.3077 -1.3499 -0.2050 0.6715 1.8339 -0.4336 3.0349 -0.1241 -1.2075 -2.2588 0.3426 0.7254 1.4897 0.7172 0.8622 3.5784 -0.0631 1.4090 1.6302 0.3188 2.7694 0.7147 1.4172 0.4889
二元正态随机数
用指定的平均向量和协方差矩阵从二元正态分布中生成值。
Mu = [1 2];σ = [1 0.5;0.5 - 2);R = chol(sigma);z = repmat(mu,10,1) + randn(10,2)*R
z =10×21.5377 0.4831 2.8339 6.9318 -1.2588 1.8302 1.8622 2.3477 1.3188 3.1049 -0.3077 1.0750 0.5664 1.6190 1.3426 4.1420 4.5784 5.6532 3.7694 5.2595
重置随机数发生器
保存随机数生成器的当前状态,并创建一个1 × 5的随机数向量。
S = rng;R = randn(1,5)
r =1×50.5377 1.8339 -2.2588 0.8622 0.3188
将随机数生成器的状态恢复为年代
,然后创建一个新的1 × 5的随机数向量。数值与之前相同。
rng(年代);R1 = randn(1,5)
r1 =1×50.5377 1.8339 -2.2588 0.8622 0.3188
三维随机数数组
创建一个3 × 2 × 3的随机数数组。
X = randn([3,2,3])
X = X(:,:,1) = 0.5377 0.8622 1.8339 0.3188 -2.2588 -1.3077 X(:,:,2) = -0.4336 2.7694 0.3426 -1.3499 3.5784 3.0349 X(:,:,3) = 0.7254 -0.2050 -0.0631 -0.1241 0.7147 1.4897
指定随机数的数据类型
创建一个1 × 4的随机数向量,其元素是单精度的。
R = randn(1,4,“单身”)
r =1x4单行向量0.5377 1.8339 -2.2588 0.8622
类(r)
Ans =“单身”
由现有数组定义的大小
创建与现有数组大小相同的正态分布随机数矩阵。
A = [3 2;2 1];sz = size(A);X = randn(sz)
X =2×20.5377 -2.2588 1.8339 0.8622
将前两行代码合并为一行是一种常见模式。
X = randn(size(A));
由现有数组定义的大小和数据类型
创建一个2乘2的单精度随机数矩阵。
P = single([3 2;2 1]);
创建大小和数据类型相同的随机数数组p
.
X = randn(size(p),“喜欢”, p)
X =2x2单矩阵0.5377 -2.2588 1.8339 0.8622
类(X)
Ans =“单身”
随机复数
由标准复数正态分布生成10个随机复数。
A = randn(10,1,“喜欢”1我)
一个=10×1复杂0.3802 + 1.2968i -1.5972 + 0.6096i 0.2254 - 0.9247i -0.3066 + 0.2423i 2.5303 + 1.9583i -0.9545 + 2.1460i 0.5129 - 0.0446i 0.5054 - 0.1449i -0.0878 + 1.0534i 0.9963 + 1.0021i
具有特定均值和协方差的随机复数
默认情况下,randn (n,“喜欢”,1我)
从标准复正态分布生成随机数。实部和虚部是具有均值的独立正态分布随机变量0
和方差1/2
.协方差矩阵是这样的(1/2 0;0 1/2)
.
Z = randn(50000,1,“喜欢”1我);Cov_z = cov(real(z),imag(z),1)
cov_z =2×20.4980 0.0007 0.0007 0.4957
为了指定一个更一般的复正态分布,定义均值和协方差矩阵。例如,指定平均值为 协方差矩阵为 .
Mu = 1 + 2i;Sigma = [2 -2;2 4];
转换先前生成的数据,使其遵循新定义的复正态分布。包括因素√6 (2)
缩放数据时因为原始分布中实部和虚部的方差是1/2。
R = chol(sigma);Z_comp = [real(z) imag(z)];z = repmat(mu,50000,1) + z_comp*sqrt(2)*R*[1;1我);z (1:10)
ans =10×1复杂1.7604 + 3.8331i -2.1945 + 6.4138i 1.4508 - 0.3002i 0.3868 + 3.0977i 6.0606 + 0.8560i -0.9090 + 8.2011i 2.0259 + 0.8850i 2.0108 + 0.6993i 0.8244 + 4.2823i 2.9927 + 2.0115i
输入参数
n
- - - - - -方阵大小
整型值
方阵的大小,指定为整数值。
如果
n
是0
,然后X
是一个空矩阵。如果
n
是阴性的,那么它是作为0
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
sz1,…,szN
- - - - - -每个维度的大小(作为单独的参数)
整型值
每个维度的大小,作为整数值的单独参数指定。
如果任何维度的大小为
0
,然后X
是一个空数组。如果任何维度的大小为负,则将其视为
0
.在二次元之外,
randn
忽略大小为1的尾随维度。例如,randn (3, 1, 1, 1)
生成一个3乘1的随机数向量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
深圳
- - - - - -每个维度的大小(作为行向量)
整型值
每个维度的大小,指定为整数值的行向量。这个向量的每个元素都表示对应维度的大小:
如果任何维度的大小为
0
,然后X
是一个空数组。如果任何维度的大小为负,则将其视为
0
.在二次元之外,
randn
忽略大小为1的尾随维度。例如,Randn ([3 1 1 1])
生成一个3乘1的随机数向量。
例子:Sz = [2 3 4]
创建一个2 × 3 × 4数组。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
typename
- - - - - -要创建的数据类型(类)
“替身”
(默认)|“单身”
要创建的数据类型(类)指定为“替身”
,“单身”
,或另一个提供randn
金宝app支持。
例子:“单身”randn (5)
p
- - - - - -要创建的数组原型
数字数组
要创建的数组原型,指定为数字数组。
例子:randn(5“喜欢”p)
数据类型:单
|双
复数支持:金宝app是的
年代
- - - - - -随机数流
RandStream
对象
随机数流,指定为RandStream
对象。
例子:s = RandStream("dsfmt19937");randn(年代,1 [3])
更多关于
标准实态和标准复正态分布
在生成随机实数时,randn
函数生成符合标准正态分布的数据:
在这里,x是一个均值为0,方差为1的随机实变量。
当生成随机复数时,例如使用命令时randn(…,“喜欢”,1我)
,randn
函数生成符合标准复正态分布的数据:
在这里,z是一个随机复变量,其实部和虚部是均值为0,方差为1/2的独立正态分布随机变量。
提示
产生的数字序列
randn
是由统一伪随机数生成器的内部设置决定的吗兰德
,兰迪
,randn
.您可以使用rng
.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
数据类型(类)必须是内置的MATLAB®数字类型。对于其他类,静态
randn
方法未被调用。例如,randn(深圳,“myclass”)
不调用myclass.randn(深圳)
.Size参数必须有固定的大小。
看到工具箱函数代码生成的可变大小限制(MATLAB编码器).
如果外部调用被启用和
randn
是不是从一个parfor
循环,生成的MEX文件使用与MATLAB中串行代码相同的随机数状态。否则,生成的MEX代码和独立代码保持自己的随机数状态,并初始化为与MATLAB相同的状态。
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
流语法
randn (
GPU不支持。金宝app年代
___)你可以指定
typename
作为“gpuArray”
.如果你指定typename
作为“gpuArray”
时,数组的默认底层类型为双
.创建具有底层类型的GPU数组
数据类型
,将底层类型指定为前面的附加参数typename
.例如,X = randn(3,datatype,'gpuArray')
创建一个具有底层类型的3 × 3随机数的GPU数组数据类型
.您可以指定基础类型
数据类型
作为以下选项之一:“双”
“单一”
还可以指定数值变量
p
作为一个gpuArray
.如果你指定
p
作为一个gpuArray
时,返回数组的底层类型与p
.
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
使用注意事项和限制:
流语法
randn (
不支持金宝app年代
___)codistributed
或分布式
数组。你可以指定
typename
作为“codistributed”
或“分布式”
.如果你指定typename
作为“codistributed”
或“分布式”
,返回数组的默认底层类型为双
.创建具有底层类型的分布式或共分布式数组
数据类型
,将底层类型指定为前面的附加参数typename
.例如,X = randn(3,datatype,'分布式')
创建具有基础类型的3 × 3分布式随机数矩阵数据类型
.您可以指定基础类型
数据类型
作为以下选项之一:“双”
“单一”
你也可以指定
p
作为一个codistributed
或分布式
数组中。如果你指定
p
作为一个codistributed
或分布式
数组时,返回数组的底层类型与p
.额外的
codistributed
语法,看randn (codistributed)
(并行计算工具箱).
有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱).
版本历史
R2006a之前介绍R2022a:将复杂性与“喜欢”
,并使用“喜欢”
与RandStream
对象
的“喜欢”
输入支持真实金宝app和复杂的原型数组。例如:
R = randn(2,2,"like",1i)
R = 0.3802 + 1.2968i 0.2254 - 0.9247i -1.5972 + 0.6096i -0.3066 + 0.2423i
所有语法都支持这个特性。金宝app另外,您现在可以使用“喜欢”
与一个RandStream
对象作为的第一个输入randn
.
R2014a:匹配现有变量的数据类型“喜欢”
若要生成与现有变量具有相同数据类型的随机数,请使用以下语法randn(__,“喜欢”,p)
.例如:
A =单(圆周率);r = randn(4,4,'like',A);类(r)
单身
属性时,此特性不可用RandStream
对象作为的第一个输入randn
.
R2013b:不支持非整数大小的输入金宝app
指定非整数的维度将导致错误。使用地板上
将非整数大小的输入转换为整数。
R2008b:“种子”
,“状态”
,“旋风”
不建议输入
没有计划删除这些输入,它们控制着底层的随机数生成器兰德
,兰迪
而且randn
.然而,rng
出于以下原因,建议使用Function:
的
“种子”
而且“状态”
发电机有缺陷。条款
“种子”
而且“状态”
是生成器的误导性名称。“种子”
指的是MATLAB v4生成器,而不是种子初始化值。“状态”
指v5版本的生成器,而不是生成器的内部状态。这三个输入不必要地使用不同的发电机
兰德
而且randn
.
有关更新代码的信息,请参见替换rand和randn的不鼓励语法.
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。