# randn

## 语法

``X = randn``
``X = randn(n)``
``X = randn(sz1,...,szN)``
``X = randn(sz)``
``X = randn(___,typename)``
``X = randn(___,"like",p)``
``X = randn(s,___)``

## 说明

``X = randn` 返回一个从标准正态分布中得到的随机标量。`

``X = randn(n)` 返回由正态分布的随机数组成的 `n`×`n` 矩阵。`

``X = randn(sz1,...,szN)` 返回由随机数组成的 `sz1`×...×`szN` 数组，其中 `sz1,...,szN` 指示每个维度的大小。例如：`randn(3,4)` 返回一个 3×4 的矩阵。`

``X = randn(sz)` 返回由随机数组成的数组，其中大小向量 `sz` 定义 `size(X)`。例如：`randn([3 4])` 返回一个 3×4 的矩阵。`

` `X = randn(___,typename)` 返回由 `typename` 数据类型的随机数组成的数组。`typename` 输入可以是 `"single"` 或 `"double"`。您可以使用上述语法中的任何输入参数。 `

``X = randn(___,"like",p)` 返回一个与 `p` 类似的由随机值组成的数组，它具有与 `p` 相同的数据类型和复/实性（实数或复数）。您可以指定 `typename` 或 `"like"`，但不能同时指定两者。`
``X = randn(s,___)` 从随机数流 `s` 而不是默认全局流生成数字。要创建一个流，请使用 `RandStream`。您可以指定 `s`，后跟上述语法中的任意输入参数组合。`

## 示例

`r = randn(5)`
```r = 5×5 0.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]; sigma = [1 0.5; 0.5 2]; R = chol(sigma); z = repmat(mu,10,1) + randn(10,2)*R```
```z = 10×2 1.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 ```

```s = rng; r = randn(1,5)```
```r = 1×5 0.5377 1.8339 -2.2588 0.8622 0.3188 ```

```rng(s); r1 = randn(1,5)```
```r1 = 1×5 0.5377 1.8339 -2.2588 0.8622 0.3188 ```

`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 ```

`r = randn(1,4,"single")`
```r = 1x4 single row vector 0.5377 1.8339 -2.2588 0.8622 ```
`class(r)`
```ans = 'single' ```

```A = [3 2; -2 1]; sz = size(A); X = randn(sz)```
```X = 2×2 0.5377 -2.2588 1.8339 0.8622 ```

`X = randn(size(A));`

`p = single([3 2; -2 1]);`

`X = randn(size(p),"like",p)`
```X = 2x2 single matrix 0.5377 -2.2588 1.8339 0.8622 ```
`class(X)`
```ans = 'single' ```

`a = randn(10,1,"like",1i)`
```a = 10×1 complex 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 ```

```z = randn(50000,1,"like",1i); cov_z = cov(real(z),imag(z),1)```
```cov_z = 2×2 0.4980 0.0007 0.0007 0.4957 ```

```mu = 1 + 2i; sigma = [2 -2; -2 4];```

```R = chol(sigma); z_comp = [real(z) imag(z)]; z = repmat(mu,50000,1) + z_comp*sqrt(2)*R*[1; 1i]; z(1:10)```
```ans = 10×1 complex 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``0`，则 `X` 为一个空矩阵。

• 如果 `n` 为负数，则将其视为 `0`

• 如果任何维度的大小为 `0`，则 `X` 为空数组。

• 如果任何维度的大小为负值，则其将被视为 `0`

• 对于第二个维度以上的维度，`randn` 忽略大小为 1 的尾部维度。例如，`randn(3,1,1,1)` 生成由随机数组成的 3×1 向量。

• 如果任何维度的大小为 `0`，则 `X` 为空数组。

• 如果任何维度的大小为负值，则其将被视为 `0`

• 对于第二个维度以上的维度，`randn` 忽略大小为 1 的尾部维度。例如，`randn([3 1 1 1])` 生成由随机数组成的 3×1 向量。

## 详细信息

### 标准实数和标准复数正态分布

`$f\left(x\right)=\frac{1}{\sqrt{2\pi }}{e}^{-{x}^{2}/2}.$`

`$f\left(z\right)=\frac{1}{\pi }{e}^{-{|z|}^{2}}.$`

## 提示

• `randn` 生成的数字序列由均匀伪随机数生成器的内部设置决定，该生成器是 `rand``randi``randn` 的基础。您可以使用 `rng` 控制这一共享的随机数生成器。